2

我遇到的问题是一个搜索功能,它应该doSearch()在用户停止在我的字段中输入至少 100 毫秒后调用我的 - 方法$("input#q)

我试图通过使用这个答案的逻辑来实现这一点,但我被困在我应该设置/取消设置setInterval()增加idleTime.

var idleTime = 0;

$("input#q").keyup(function() {
  idleTime = 0;
  idleInterval = setInterval(function() {
    idleTimeIncrement();
  }, 25);
});

function idleTimeIncrement() {
  idleTime += 25;
  if (idleTime >= 100) {
    doSearch($("input#q").val());
  }
}

我在 Firebug 控制台中遇到的错误说:

太多的递归。

所以我想我的代码中有一个无限循环...... ;-)

4

1 回答 1

9

当你开始一个新的计时器时,你需要重置你的计时器。这是我要做的:

var timer = null;
$('input#q').keyup(function() {
    if (timer) {
        clearTimeout(timer);
    }
    timer = setTimeout(function() {
        doSearch($('input#q').val())
    }, 100);
});
于 2012-05-31T09:37:07.727 回答