我有一个带有<input type=text />
的表单,我想在最后一次按键5秒后调用一个javascript函数,每次按下一个新键时,此计时器应该重置并且只在之后调用该函数5秒。
我该怎么做?
我正在使用jQuery。
谢谢!
答案 0 :(得分:56)
这样的事情应该让你开始:
var timeout;
$('input[type=text]').keypress(function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(myFunction, 5000)
})
答案 1 :(得分:4)
这很好,但请记住,您需要在文档加载后以及加载函数后启用此代码以清除超时。
以下是完整的代码:
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>
答案 2 :(得分:0)
虽然它不使用jQuery,但你也可以看一下here描述的去抖动函数。
史蒂夫