【发布时间】:2020-01-29 09:19:10
【问题描述】:
如何删除 jQuery 多重自动完成列表中已选择的值?
例如,如果我选择了word A,下次键入时它不应该出现在列表中。此外,如果有人尝试使用退格键删除元素,则该元素应重新出现在自动完成列表中。
$(function() {
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#birds").on("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).autocomplete("instance").menu.active) {
event.preventDefault();
}
}).autocomplete({
source: function(request, response) {
$.getJSON("search.php", {
term: extractLast(request.term)
}, response);
},
select: function(event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.value);
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
【问题讨论】:
-
解决这个问题的简单方法是在服务器端。在 AJAX 请求中发送已选择的单词列表,并将它们从您在那里生成的响应中排除。
-
@RoryMcCrossan 选定的单词我可以从服务器级别删除,但问题是如果用户通过按退格键手动从自动完成中删除任何项目,那么我如何追踪它以便我可以发送那个特定的项目到服务器
-
你不需要。只需发送请求中字段的值,并用逗号分割,形成服务器上的数组。然后使用已选择的列表对完整列表进行重复数据删除。
-
@RoryMcCrossan 如何获取退格键上的选定字段列表?我找不到任何活动
标签: jquery autocomplete jquery-ui-autocomplete