JQuery 在开始时自动完成 UI 搜索

标签 jquery search user-interface autocomplete

使用 JQuery AutoComplete UI 1.8,我需要更改搜索,使其仅在字符串开头匹配。 背景我的源来自一个我无法控制的ajax调用,它返回15,000及其相应的PK。 value 是名称,Id 是整数 PK。下面的代码可以工作,但由于我正在搜索 15,00 个与字符串中任何位置匹配的字符串,所以速度太慢。 我看过这篇文章,链接,但我不知道如何在不丢失源中的 Id 字段的情况下进行操作。

我需要搜索仅匹配 data.d 中值的开头而不丢失 Id 字段。 这是一个 ASP.Net 应用程序,但我认为这并不重要。 有想法吗?

$("#companyList").autocomplete({
              minLength: 4,
              source: data.d,
              focus: function(event, ui) {
                  $('#companyList').val(ui.item.value);
                  return false;
              },
              select: function(event, ui) {
                  $('#companyList').val(ui.item.value);
                  $('#<%= hdnCompanyListSelectedValue.ClientID %>').val(ui.item.Id);
                  return false;
              }
          });

最佳答案

这里为您提供了一个可能的解决方案。你们走在正确的轨道上。我使用 json 字符串作为数据源,并且我知道我想要匹配的文本位于 item.label 字段中。它可能在 item.value 中: 输入字段:

<input type="text" id="state" name="state" /> 
<input
readonly="readonly" type="text" id="abbrev" name="abbrev" maxlength="2"
size="2"/>
<input type="hidden" id="state_id" name="state_id" />

jQuery

var states = [{"id":"1","label":"Armed Forces Americas (except Canada)","abbrev":"AA"},{"id":"2","label":"Armed Forces Africa, Canada, Europe, Middle East","abbrev":"AE"},{"id":"5","label":"Armed Forces Pacific","abbrev":"AP"},{"id":"9","label":"California","abbrev":"CA"},{"id":"10","label":"Colorado","abbrev":"CO"},{"id":"14","label":"Florida","abbrev":"FL"},{"id":"16","label":"Georgia","abbrev":"GA"},{"id":"33","label":"Northern Mariana Islands","abbrev":"MP"},{"id":"36","label":"North Carolina","abbrev":"NC"},{"id":"37","label":"North Dakota","abbrev":"ND"},{"id":"43","label":"New York","abbrev":"NY"},{"id":"46","label":"Oregon","abbrev":"OR"}];

$("#state").autocomplete({
    source: function(req, response) { 
    var re = $.ui.autocomplete.escapeRegex(req.term); 
    var matcher = new RegExp( "^" + re, "i" ); 
    response($.grep( states, function(item){ 
        return matcher.test(item.label); }) ); 
     },
minLength: 2,
select: function(event, ui) {
$('#state_id').val(ui.item.id);
$('#abbrev').val(ui.item.abbrev);
}
});

这是一个工作示例: http://www.jensbits.com/demos/autocomplete/index3.php

关于JQuery 在开始时自动完成 UI 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791379/

相关文章:

xml - 不完整的谷歌站点地图会影响我的搜索排名吗?

c# - ASP.NET:功能键快捷方式?

java - 最简单的使用方法<输入类型="file">

javascript - Ajax 成功函数未运行

javascript - 同一页面上两个js库的js冲突

javascript - 为什么必须将 'jQuery' 传递给此函数(请参阅最后一行代码)?

php - <option> 标签中有多个值?

search - 定制分析仪Elasticsearch Soundex Plus Snowball

java - 将当前 JPanel 分配给 JPanel 的新实例但不刷新

Java Swing布局问题与代码优化