Вызов функции JavaScript после 5 секунд последнего нажатия клавиши - PullRequest
22 голосов
/ 29 марта 2009

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

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

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

спасибо!

Ответы [ 3 ]

56 голосов
/ 29 марта 2009

Как-то так должно начаться:

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

    timeout = setTimeout(myFunction, 5000)
})
4 голосов
/ 01 октября 2011

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

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

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>
0 голосов
/ 29 марта 2009

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

Steve

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...