我已经使用以下源标记实现了我喜欢的功能:
source: function (request, response) {
// delegate back to autocomplete, but extract the last term
response($.ui.autocomplete.filter(availableTags, extractLast(request.term)));
},
我使用以下源标记实现了新功能:
source: function (request, response) {
// Using a custom source callback to match only the beginning of terms
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i");
response($.grep(availableTags, function (item) {
return matcher.test(item);
}));
}
如何组合这两个源标签,以便我可以拥有两者的功能?
答案 0 :(得分:1)
我认为你正在寻找类似的东西(只需将extractLast
的结果传递给正则表达式而不是整个术语):
source: function (request, response) {
var term = extractLast(request.term),
matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex(term), "i");
response($.grep(availableTags, function (item) {
return matcher.test(item);
}));
}
示例: http://jsfiddle.net/Aa5nK/6/
两者在做什么:
,
描绘)^
表示“以...开头”,后跟一个实用程序函数,用于删除该术语中的任何特殊字符,最后是i
参数,该参数使正则表达式不区分大小写。extractLast
,然后根据该术语创建正则表达式。