2008-12-20 89 views
4

我有這個jQuery代碼在keyup事件上(通過keyterms.php)查詢API。它的工作原理是這樣的,但我試圖找出如何實現「暫停」,以便在最後一次安裝後僅在特定時間(例如2秒)之後執行查詢。任何幫助都感激不盡。謝謝!在一段時間間隔後的Keyup事件

$(document).ready(function() { 
    $('#loading').hide(); 
    $('#q').keyup(function(){ 
     $('#loading').show(); 
     $.post("keyterms.php", { 
     q: $('#q').val() 
     }, function(response){ 
     $('#qResult').fadeOut(); 
     setTimeout("finishAjax('qResult', '"+escape(response)+"')", 400); 
     }); 
     return false; 
    }); 
}); 

回答

13

您可以使用StackOverflow上使用的jQuery插件的Users Page;這就是所謂的TypeWatch

它可以像這樣被應用:

<input type="text" id="tb" /> 


<script> 
$("#tb").typeWatch({ highlight: true, wait: 500, captureLength: -1, callback: finished }); 
</script> 

凡在這種情況下,finished是一個回調函數(基準),將被調用時的輸入的時間(該量在這種情況下, 500毫秒)從最後一次keyUp事件傳遞。

這裏是它需要的參數的簡短描述(它實際上有一個參數,一個對象,它的屬性被用作輸入參數):

  • 亮點:美學,確定當文本框獲得焦點時文本是否應該突出顯示。默認true
  • 等待:插件認爲鍵入完成之前要等待的毫秒數。默認。
  • captureLength:允許事件觸發前所需的最少字符數。默認。
  • 回調:用戶「完成」輸入後的回調函數。默認無效

這個插件的現場演示,檢查出Users Page

0

使用setTimeout只調用鍵被按下兩秒後,而不是調用它直接當按下鍵的AJAX方法。我不太熟悉JQuery的弱點,因爲我還沒有機會玩它,但它應該可以插入到上面的方法中。

(注:兩秒一個相當長的時間;))

相關問題