2012-11-03 48 views
1

我想實現一個Ajax搜索/自動完成,如用戶類型這裏是我的代碼:加載結果汽車無作爲輸入字段的用戶類型

$('#productSearch').live('keyup',function(){ 
    var searchterm = encodeURIComponent($('#productSearch').val()); 
    $('.ajax-search-results').load('/ajax/search.php?type=product&s=' + searchterm); 

}); 

的問題是,結果並不一致與輸入值,我不知道爲什麼,但是當我輸入速度太快(處理.load()可能太快)?結果是不一致的(不是我所期望的),如果我輸入緩慢,它完美的作品。

有人能告訴我怎麼才能過來這種情況?

  • 我想過關閉功能,直到加載完成,但這也意味着我將失去用戶輸入的內容,直到完成操作?

回答

1

這通常是固定用小超時,從而不會堆疊在彼此的頂部請求,併爲每一個鍵做AJAX當用戶鍵入快捷,並中止先前的電話,如果定期做$就調用(不太容易abort() XHR帶負載()):

var timer; 

$(document).on('keyup', '#productSearch',function(){ 
    clearTimeout(timer); 
    timer = setTimeout(function() { 
     var searchterm = encodeURIComponent($('#productSearch').val()); 
     $('.ajax-search-results').load('/ajax/search.php?type=product&s=' + searchterm); 
    }, 300); 
});