User idle time while typing in input

淺唱寂寞╮ 提交于 2019-12-08 02:29:20

问题


The problem I'm having is a search function which should call my doSearch()-method after the user stopped typing for at least 100ms in my $("input#q) field.

I tried to achieve this by using the logic of this answer, but I'm stuck with where I should set/unset the setInterval() which increments the 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());
  }
}

The error I'm getting in Firebug Console says:

Too much recursion.

So I guess I'm having an infinite loop in my code... ;-)


回答1:


You need to reset your timer when you start a new one. Here's what I would do:

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


来源:https://stackoverflow.com/questions/10830972/user-idle-time-while-typing-in-input

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!