【问题标题】:jQuery UI Autocomplete: Strange Behaviour of suggestion list after first numberjQuery UI 自动完成:第一个数字后建议列表的奇怪行为
【发布时间】:2025-12-13 15:50:02
【问题描述】:

我在文本框上的自动完成出现以下问题:用户可以输入一个数字并获得他应该得到的建议列表。这有效,但仅适用于第一个数字,如果我点击第二个数字,列表会切断一些条目,我不知道为什么。

更详细地描述问题: 目前,数据库中有以下数字: 123456 123457 123458 123459 1234510 1234511 1234512 1234513 123451

如果我输入 1,所有 9 个条目都应该在列表中。如果我输入 12 只有这些条目在列表中:

123451 123456 123457 123458 123459

其余的都没了,我真的不知道为什么。所以我希望你们能给我一个建议或者看看我的错误在哪里:

以下是视图用于创建自动完成功能的代码:

<script>
    $("#CompanyId").autocomplete({
        source: "/AutoComplete/AutoCompleteCompanyID",
        minLength: 1,
        select: function (event, ui) {
        }
    });
</script>

自动完成的数据来源:

public JsonResult AutoCompleteCompanyID(string term)
{
    var data = db.Companies.Where(s => s.CompanyID.ToString().Contains(term)).Select(x => new { id = x.CompanyID, label = x.CompanyName }).ToArray();
    return Json(data, JsonRequestBehavior.AllowGet);
}

如果您需要更多代码或信息,看看问题出在哪里,我会尽快为您提供。感谢您的任何帮助和建议! :)

【问题讨论】:

  • 所以你的意思是说在你输入12之后,如果你删除并输入1,9个条目就不会显示回来?
  • 您好,感谢您的回答。问题已解决,更多详情请看下面我的回答。

标签: jquery asp.net asp.net-mvc jquery-ui jquery-ui-autocomplete


【解决方案1】:

我似乎无法复制此内容,但我认为这与将 CompanyID 转换为字符串有关,您可能需要将 db 结果转换为可枚举 - 例如

var data = db.Companies.ToList().Where(s => s.CompanyID.ToString().Contains(term)).Select(x => new { id = x.CompanyID, label = x.CompanyName }).ToArray();

另外:在CompanyName 上进行搜索可能更容易,但要求用户记住要搜索的公司 ID 有点过分。

【讨论】:

  • 您好,感谢您的帮助、code-sn-p 和您的建议。你无法复制它是非常合乎逻辑的,因为我做错了其他事情,或者至少是不同的。我使用 double 来存储我的 ID,因为有些情况下数字很长,我没想到 long 是一种类型。所以我从 double 切换到 long,现在一切正常。
最近更新 更多