我遇到的问题是搜索功能,该功能应在用户停止在我的doSearch()字段中键入至少100ms后调用我的$("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控制台中收到的错误提示:


递归过多。


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

最佳答案

启动新计时器时,您需要重置计时器。这就是我要做的:

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

关于jquery - 输入输入时的用户空闲时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10830972/

10-08 21:40