Подтвердить что ты не робот

OnKeyUp JavaScript Time Delay?

Приветствую мастеров Интернета:) Теперь у меня появился новый глупый вопрос, и я прошу простить меня. Я читал везде об этом решении, но не нашел того, что работает для меня.

У меня есть:

<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">

Все, что я спрашиваю, как это сделать, чтобы не проверять после нажатия кнопки, но после того, как сказать 1000 миллисекунд бездействия клавиатуры?

4b9b3361

Ответ 1

Попробуйте следующее:

var timer;
function chk_me(){
   clearTimeout(timer);
   timer=setTimeout(function validate(){...},1000);
}

Таким образом, каждый раз, когда нажимается клавиша, тайм-аут будет удален и снова установлен.

Ответ 2

Другой подход, без глобалов:

var typewatch = function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
    }  
}();

Применение:

Присоединение события через JavaScript:

window.onload = function () {
    document.getElementById('domain').onkeyup = function() {
        typewatch(function(){alert('Time elapsed!');}, 1000 );
    };
};

Или используя встроенный обработчик событий (не так рекомендуется), как у вас в вашем примере:

<input type="text" name="domain" id="domain"
   onKeyUp="typewatch(function(){alert('Time elapsed!');}, 1000 );"/>

Попробуйте демонстрацию здесь.

Ответ 3

Действительно полезный пост!

Другой подход без globals, используя свойства функции:

function chk_me(){
   if(typeof timer !== undefined){
     clearTimeout(this.timer);
   }
   this.timer=setTimeout(function validate(){validate(...)},1000);
}

Ответ 4

setTimeOut() будет таким;)

<input name="domain" type="text" id="domain" onKeyUp="setTimeout('chk_me()',1000);">

текст ссылки