修改jQuery自动完成功能以匹配建议输出

时间:2017-10-04 19:01:00

标签: javascript jquery autocomplete jquery-ui-autocomplete

我有以下代码。

var data=["NYC - New York City", "LA - Los Angeles", "SF - San Francisco"];
$function(){
    $("#title").autocomplete({
        source: function(request, response){
            var matcher=new RegExp("^"+$ui.autocomplete.escapeRegex(request.term),"i");
            response($grep(data, function(item){
                return matcher.test(item);
            }));
        }
    });
});         

当我输入纽约市时,我得到了纽约市 - 纽约市'在我的建议列表中。 LA和SF也是如此。但是,当我输入纽约市时,我没有得到任何建议。有谁可以帮我解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

用于匹配字符串的正则表达式是从字符串的开头("^")进行搜索 - 您可以删除它以匹配数据字符串中任何位置的类型字符串:

var matcher = new RegExp($ui.autocomplete.escapeRegex(request.term), "i");

此外,如果您想从特定单词的开头匹配,则可以使用单词边界:

var matcher = new RegExp("\b" + $ui.autocomplete.escapeRegex(request.term), "i");

例如,如果输入“an”,它将匹配“Angeles”但不匹配“San”或“Francisco”。

修改

这是一个JSFiddle(https://jsfiddle.net/Lrtuyeph/),它显示了将data数组作为source属性传递的真正简单示例 - 默认行为是您希望它执行的操作。