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

Вызов функции javascript после 5 секунд последнего нажатия клавиши

У меня есть форма с <input type=text />, и я хочу вызвать функцию javascript через 5 секунд после последнего нажатия клавиши, и каждый раз, когда нажимается новая клавиша, этот таймер должен reset и только вызывать функцию после 5 секунд.

Как я могу это сделать?

Я использую jQuery.

спасибо!

4b9b3361

Ответ 1

Что-то вроде этого должно начаться:

var timeout;
$('input[type=text]').keypress(function() {
    if(timeout) {
        clearTimeout(timeout);
        timeout = null;
    }

    timeout = setTimeout(myFunction, 5000)
})

Ответ 2

Этот ответ отличный, но помните, что этот код необходимо включить после загрузки документов и после загрузки функции, чтобы очистить тайм-аут.

Вот полный код:

var timeout;
    $(document).ready(function(){
      $('input[type=text]').keypress(function() {
          if(timeout) {
              clearTimeout(timeout);
              timeout = null;
          }
          timeout = setTimeout(myFunction, 5000);
      });
    });
		
	var myFunction = new function() { 
	  alert('myFunction is running');
	  clearTimeout(timeout); // this way will not run infinitely
	}
		
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

Ответ 3

Хотя он не использует jQuery, вы также можете посмотреть функцию debouncing, описанную здесь.

Стив