-->

而在打字输入用户空闲时间(User idle time while typing in input)

2019-09-17 15:25发布

我遇到的问题是一个搜索功能,这应该叫我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控制台中的错误说:

太多的递归调用。

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

Answer 1:

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

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


文章来源: User idle time while typing in input