密钥重新启动的Javascript计时器?

时间:2010-03-22 12:16:52

标签: javascript jquery ajax

O,所以我有一个'实时搜索'ajax搜索,它目前在每个密钥上运行一个sql搜索(通过ajax)。

我更喜欢的是:

在没有按下一个键之后运行一个sql搜索,比如800毫秒

所以我想要一个在按键启动时启动的计时器, 如果计时器达到800毫秒,则调用ajax, 如果发生新的键盘事件,则重新启动计时器

我该怎么做?

3 个答案:

答案 0 :(得分:5)

(function () {

var theTimeout;

function doSearch() {
  // Do Search
};

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

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

}())

答案 1 :(得分:2)

你可以看一下优秀的插件TypeWatch(IIRC StackOverflow在Users页面使用它)。以下是一个示例用法:

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

答案 2 :(得分:0)

我有这个问题,我的解决方案就是这样:

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

不知道它是否是最好的解决方案,但它有效:)