修改 jQuery 自动完成功能以匹配建议输出
Modifying jQuery Autocomplete functionality to match suggestions output
我有以下一段代码。
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);
}));
}
});
});
当我输入 NYC 时,我的建议列表中出现了 'NYC - New York City'。洛杉矶和旧金山也一样。但是,当我输入 New York City 时,我没有得到任何建议。谁能帮我解决这个问题?谢谢
用于匹配字符串的正则表达式从字符串的开头搜索 ("^"
) – 您可以删除它以匹配数据字符串中任意位置的键入字符串:
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
属性 传递——默认行为会做什么你想让它做。
我有以下一段代码。
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);
}));
}
});
});
当我输入 NYC 时,我的建议列表中出现了 'NYC - New York City'。洛杉矶和旧金山也一样。但是,当我输入 New York City 时,我没有得到任何建议。谁能帮我解决这个问题?谢谢
用于匹配字符串的正则表达式从字符串的开头搜索 ("^"
) – 您可以删除它以匹配数据字符串中任意位置的键入字符串:
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
属性 传递——默认行为会做什么你想让它做。