我有以下代码。
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也是如此。但是,当我输入纽约市时,我没有得到任何建议。有谁可以帮我解决这个问题?感谢。
答案 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
属性传递的真正简单示例 - 默认行为是您希望它执行的操作。