键入输入时用户空闲时间

时间:2012-05-31 09:33:55

标签: jquery user-input idle-timer

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

我试图通过使用此answer的逻辑来实现此目的,但我仍然坚持设置/取消设置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 Console中遇到的错误是:

  

太多的递归。

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

1 个答案:

答案 0 :(得分:8)

您需要在开始新计时时重置计时器。这就是我要做的事情:

var timer = null;
$('input#q').keyup(function() {
    if (timer) {
        clearTimeout(timer);
    }
    timer = setTimeout(function() {
        doSearch($('input#q').val())
    }, 100);
});