2010-05-03 48 views
1

包裹呢?這裏是我的問題,多個自動完成呼叫:使用自動完成的jQuery插件,我想避免多個AJAX請求時,用戶通過與類似避免由setTimeout的

圍繞

$('#query1').autocomplete({ 
        serviceUrl:'/actions/autocomplete?population=salon', 
        minChars:3, 
        maxHeight:300, 
        width:200, 
        clearCache:true, 
        onSelect: function(suggestions,data){ $(".btn1").attr("href", "${pageContext.request.contextPath}/actions/espaceClients?participantId=" + data) } 
       }); 

打擊他的keynoard

   var search = false; 
      $('#query1, #query2, #query3').keyup(function(){ 
       if (!search){ 
        search = true; 
       } 
       if (search) { 
        search = false; 
        autocompleteThem(); 
       } 
      }); 

你可以看到,上面的代碼是愚蠢的,但它有點顯示我想要做什麼。

簡而言之,如果用戶在某段時間內沒有鍵入任何內容,則可以調用自動完成功能。

我希望我被清楚的,我的大腦一片混亂......

+0

我找類似你做什麼,你會請分享示例代碼?你使用的是asp.net嗎? – 2010-05-04 14:11:45

回答

4

使用deferRequestBy option上的插件,像這樣:

$('#query1').autocomplete({ 
       serviceUrl:'/actions/autocomplete?population=salon', 
       minChars:3, 
       maxHeight:300, 
       width:200, 
       clearCache:true, 
       deferRequestBy: 200, //200ms 
       onSelect: function(suggestions,data){ $(".btn1").attr("href", "${pageContext.request.contextPath}/actions/espaceClients?participantId=" + data) } 
      }); 
+0

我是有時候這樣的廢話... – pixelboy 2010-05-03 12:28:30

3

你真的想阻止多個simultanious請求?這會阻止這個插件的有用性。您可以向請求添加延遲,也可以使用插件(例如AjaxQueue)確保結果以正確的順序返回瀏覽器。

要使用內置delay參數(由手動):

擊鍵 後 自動完成等待以毫秒爲單位的延遲,以激活自身。零延遲使 對本地數據有意義(更多 響應),但可以爲遠程數據產生大量的 負載,同時響應更少的 。

使用指定的延遲選項初始化自動完成。

$(".selector").autocomplete({ delay: 0 }); 

獲取或延遲選項設置,初始化後。

//getter 
var delay = $(".selector").autocomplete("option", "delay"); 
//setter 
$(".selector").autocomplete("option", "delay", 0); 

延遲參數爲autocomplete plugin you're using應的是

deferRequestBy 
+0

對不起,我忘了提及我正在使用一個外部插件:http://www.devbridge.com/projects/autocomplete/jquery/ – pixelboy 2010-05-03 12:23:59