【发布时间】:2023-03-17 05:20:01
【问题描述】:
我在文本字段上有一个 jquery 自动完成功能,并且我正在使用一种 hacky 方式来允许在同一个文本框中多次自动完成功能。基本上,您可以用逗号分隔一个值,然后正则表达式匹配器将仅在最终值之后尝试匹配该术语。例如,我可以在文本框中输入 dog、cat、pi,而 jquery 将为 pig 自动完成,因为我只将“pi”传递给自动完成。我的方法的唯一问题是,如果用户点击自动完成功能,那么所有以前的数据(狗、猫)都会消失并被自动完成值“猪”取代。关于如何在不删除以前数据的情况下点击建议的任何想法?
function filterResults(myList, matcher) {
var retGrep = new Array();
for (var i = 0; i < myList.length; i++) {
if (matcher.test(myList[i])) {
retGrep.push(myList[i]);
}
}
return retGrep;
}
$("#title").autocomplete({
source: function(request, response) {
if(request.term.indexOf(',') != -1){
var re = $.ui.autocomplete.escapeRegex(request.term.substr(request.term.lastIndexOf(',') + 1));
}else{
var re = $.ui.autocomplete.escapeRegex(request.term);
}
var matcher = new RegExp("^" + re, "i");
var results = filterResults(titleList, matcher);
response(results.slice(0, 5));
},
messages: {
noResults: '',
results: function() {}
}
});
【问题讨论】:
-
能出示相关代码吗?
-
我贴出来了...没有cmets..来吧....
-
我们实际上并没有收到编辑更改的警报,因此很容易错过。这就是为什么您要从一开始就确保所有信息都包含在问题中,这样您就可以得到我们最好的帮助。
标签: jquery autocomplete