更改自动填充搜索的工作方式

时间:2011-07-20 08:28:55

标签: jquery jquery-ui-autocomplete

目前我有:

$("#location").autocomplete({source: cities, minLength: 0, autoFocus: true});

问题是此插件会在给定输入中搜索任何位置的匹配项。

例如,如果我输入“Bos”,它不仅会建议以“Bos”开头的单词,还会建议中间带有“bos”的单词。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

正如@jensgram所说,你可以使用source方法。

这样的东西在我的网络应用程序中适用于我:

$("#location").autocomplete({
    source : function(request, response) {
        /* cities.html?query=... should return json array words starting with query value */
        $.getJSON('cities.html?query=' + request.term, function(data) {
            response(data);
        });
    }
});

答案 1 :(得分:0)

这在jQuery Autocomplete插件中很容易,documentation回答了这个问题:

  

matchContains | Boolean | Default: false

     

是否比较   查看内部(即“ba”匹配“foo bar”)搜索结果。   仅在使用缓存时才重要。不要与自动填充混合。

您可能希望从jQuery UI Autocomplete切换到此功能,因为它功能更全面。

答案 2 :(得分:0)

您似乎必须使用source选项的回调设置:

  

第三种变体,即回调,提供了最大的灵活性   可用于将任何数据源连接到自动完成。回调   有两个参数:

     
      
  • 一个请求对象,其中包含一个名为“term”的属性   指的是文本输入中当前的值。例如,当   用户在城市字段中输入“new yo”,自动填充术语将为   等于“新哟”。
  •   
  • 响应回调,它需要包含单个参数   要向用户建议的数据。应根据此过滤此数据   提供的术语,并且可以是上述任何格式   对于简单的本地数据(String-Array或Object-Array with   标签/价值/两个属性)。提供自定义时很重要   源回调以在请求期间处理错误。你必须永远   即使遇到错误也会调用响应回调。这个   确保窗口小部件始终具有正确的状态。 (source
  •   

<强>未测试

$(function() {
    var options = ["Foo", "Bar", "Baz", "Foobar"];

    $(<selector>).autocomplete({
        source: function(request, response) {
                    var matches = [],
                        term = request.term.toLowerCase(),
                        termLen = term.length;

                    for (var i = 0, j = options.length; i < j; i++) {
                         if (options[i].substring(0, termLen).toLowerCase() == term) {
                             matches.push(options[i]);
                         }
                    }

                    response(matches);
            }
    });
});