User idle time while typing in input

idle-timer, jquery, user-input

Solution

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);
});

Problem

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... ;-)

Original source

Related problems