正如我提到的主題,服務器加載大約200-1000毫秒(從調試日誌),但我必須再按一個鍵,使其顯示結果。即使我使自動完成延遲時間更長,仍然無法顯示結果,我仍然必須按下一個鍵。自動完成無法等到從服務器加載的JSON
var timer;
//to wait for x ms until some chars typed
$("#keyword").bind("keyup", function(e) {
if ($(this).val().length > 2)
{
window.clearTimeout(timer);
timer = window.setTimeout(function(){
var datax = "";
$(function() {
$.getJSON("URI", ({"search":$("#keyword").val()}),function(datax){
$("#keyword").autocomplete({
minLength: 3,
delay: 2000,
source: datax,
focus: function(event,ui){
$("#keyword").val(ui.item.nama);
return false;
},
select: function(event,ui){
$("#keyword").val(ui.item.nama);
$("#btnCariMainHeader").click();
return false;
}
})
.data("autocomplete")._renderItem = function(ul,item){
return $("<li>")
.data("item.autocomplete",item)
.append("<a><table width='100%'><tr><td width='60px'>"+"<img height='60px' src='/thumb/" + item.value + ".jpg'/>"+"</td><td><b>"+item.nama+"</b><br><span class='suffix'>"+item.value+" "+item.bu+"</span><br><span class='suffix'>"+item.pos+"</span></td></tr></table></a>")
.appendTo(ul);
};
});
});
},2000);
}
});
你知道自動完成小部件支持從服務器加載數據,通過使用標準JSON格式或自定義回調函數,對吧?你不需要做任何這種糟糕的事情。 –
@Matti謝謝你的解釋, 我剛開始學習這個強大的工具。 – akauts