2010-03-22 110 views
0

O,所以我有一個'實時搜索'ajax搜索,它目前在每個鍵上運行一個sql搜索(通過ajax)。在計時器上重新啓動的Javascript計時器?

什麼,我寧願是:

運行的關鍵後SQL搜索尚未按下說800毫秒

所以我想,如果發生新的keyup事件就會重新啓動定時器

如何有上鍵啓動一個定時器, 如果計時器達到800毫秒那麼AJAX調用, 我會做這個?

回答

2

有一個很好的插件TypeWatch你可以看看(IIRC StackOverflow使用這個爲Users頁面)。下面是一個示例用法:

$("#textId").typeWatch({ 
    highlight: true, 
    wait: 800, 
    captureLength: -1, 
    callback: function() { 
     // changed text 
    } 
}); 
+0

絕對完美! – Haroldo 2010-03-22 12:36:34

5
(function() { 

var theTimeout; 

function doSearch() { 
    // Do Search 
}; 

$('#theField').bind('keyup', function() { 
    clearTimeout(theTimeout); 

    theTimeout = setTimeout(doSearch, 800); 
}); 

}()) 
+2

+1,只是輸入一個類似的解決方案。 – 2010-03-22 12:21:01

+0

+1,然後輸入相同的解決方案! :P – Matt 2010-03-22 12:21:41

+0

也許是命名空間全局變量的一個想法,但它肯定是操作的工作:) – 2010-03-22 12:22:36

0

我有這樣的問題,我的解決辦法是這樣的:

var doAjax = 0 
$("input#name").keyup(function(){ 
    doAjax++; 
    setTimeout(function(){ 
     doAjax--; 
     if(doAjax>=1){ 
      return; 
     } 
     $.post("do_ajax", { ... 

說不上來,如果這是最好的解決方案,但它的工作原理:)