Ответ 1
Что-то вроде этого должно начаться:
var timeout;
$('input[type=text]').keypress(function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(myFunction, 5000)
})
У меня есть форма с <input type=text />
, и я хочу вызвать функцию javascript через 5 секунд после последнего нажатия клавиши, и каждый раз, когда нажимается новая клавиша, этот таймер должен reset и только вызывать функцию после 5 секунд.
Как я могу это сделать?
Я использую jQuery.
спасибо!
Что-то вроде этого должно начаться:
var timeout;
$('input[type=text]').keypress(function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(myFunction, 5000)
})
Этот ответ отличный, но помните, что этот код необходимо включить после загрузки документов и после загрузки функции, чтобы очистить тайм-аут.
Вот полный код:
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>
Хотя он не использует jQuery, вы также можете посмотреть функцию debouncing, описанную здесь.
Стив