所以我用谷歌搜索,在这里搜索,到处去,我找不到答案。我正在使用jQuery UI自动完成功能来搜索项目ID数字列表。它们的长度可以是1 - 99999.
问题:
例如,当我输入'2'时,没有任何反应,然后我再次按退格键并再次键入'2',这次,从2开始的任何内容都显示在下面,并且事件显示在开发人员工具的“网络列表”中。此外,当我搜索1时,只显示1,但它没有执行搜索,它只是吐出输入值。但是当我点击退格并再次键入1时,搜索会触发,我得到的结果与我的2相同。通常无论我输入的是什么数字,它应该只是默认情况下应该不是吗?如何更正此问题并使我的自动填充功能正常工作。
CODE:
$('.item-inventory').on('keyup', '#item_num', function(){
//var search = $(this);
var itemname;
var itemprice;
var itemdesc;
$(this).autocomplete({
delay : 100,
source: function(request, response){
$.ajax({
url: '../assets/server/orders/item_search.php',
dataType: 'JSON',
data: {search: request.term},
success: function (data){
var keys = data.search;
// $('#item-name').val(data.search[0].item);
// itemPrice = data.search[0].price;
// itemDesc = data.search[0].desc;
response($.map( keys, function(i){
return{
label : i.id
};
}));
}
});
},
minLength : 1
});
//$('#item-search-results').removeClass('hidden');
$(this).on('autocompleteselect', function(event, ui){
$('#item-search-results').removeClass('hidden');
});
});
答案 0 :(得分:1)
基本上你是在第一次按键后连接自动完成(这对于第一次按键来说太迟了)。您还在每次按键时重新连接它。
您需要在启动时将自动完成功能连接到任何相关元素。
e.g。把它放在密钥处理程序之外:
$('.item-inventory #item_num').autocomplete({
delay : 100,
source: function(request, response){
$.ajax({
url: '../assets/server/orders/item_search.php',
dataType: 'JSON',
data: {search: request.term},
success: function (data){
var keys = data.search;
// $('#item-name').val(data.search[0].item);
// itemPrice = data.search[0].price;
// itemDesc = data.search[0].desc;
response($.map( keys, function(i){
return{
label : i.id
};
}));
}
});
},
minLength : 1
});
答案 1 :(得分:0)
您可以在此处添加更多活动 keydown :
$('.item-inventory').on('keyup keydown', '#item_num', function(){
........
});
答案 2 :(得分:0)
If not works Properly then At Page load call the autocomplete function with empty array of strings. E.g. $("input").each(function () { $(this).autocomplete({ src: [] }); }); Now this will work at first keypress also. Best of Luck.
答案 3 :(得分:0)
请在就绪函数中初始化自动完成。 喜欢:$(Id).autocomplete();