我有以下 jquery 函数,它将源作为来自服务器的 json 进行处理。 但是当我在客户端中运行这个脚本时,只要我输入,我就会从相同的值中获得多个值,并且当我继续输入键时它会不断增加。
function autocomplete(html_field, request_url, hidden_field){
var map = {};
var objects = [];
$(html_field).typeahead({
minlength: 3,
source: function (query, process) {
return $.get(request_url, { query: query }, function (data) {
$.each(data, function(i, obj){
map[obj.translations__name] = obj;
objects.push(obj.translations__name);
});
return process(objects);
});
},
updater: function (item) {
$(hidden_field).val(map[item].id);
return item;
}
});
}
有什么想法吗?
最佳答案
我认为你必须在 .each() 函数之前清空数组对象,因为对于每个 jquery 调用,数据都会被插入数组中。
source: function (query, process) {
return $.get(request_url, { query: query }, function (data) {
objects.splice(0, objects.length);
$.each(data, function(i, obj){
map[obj.translations__name] = obj;
objects.push(obj.translations__name);
});
return process(objects);
});
您可以在此处看到空数组:How do I empty an array in JavaScript?
关于javascript - Bootstrap 提前输入自动完成从相同的值返回多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359126/