【发布时间】:2019-10-02 23:56:33
【问题描述】:
我有一个带有<input type=text /> 的表单,我想在最后一次按键 5 秒后调用一个 javascript 函数,每次按下一个新键时,这个计时器应该重置,并且只在 5 秒后调用该函数.
我该怎么做?
我正在使用 jQuery。
谢谢!
【问题讨论】:
-
您的意思是当用户当前输入字段处于活动状态时按下的最后一个键?
标签: javascript jquery
我有一个带有<input type=text /> 的表单,我想在最后一次按键 5 秒后调用一个 javascript 函数,每次按下一个新键时,这个计时器应该重置,并且只在 5 秒后调用该函数.
我该怎么做?
我正在使用 jQuery。
谢谢!
【问题讨论】:
标签: javascript jquery
这样的事情应该可以帮助您入门:
var timeout;
$('input[type=text]').keypress(function() {
if(timeout) {
clearTimeout(timeout);
timeout = null;
}
timeout = setTimeout(myFunction, 5000)
})
【讨论】:
This answer 很好,但请记住,您需要在文档加载后和函数加载后启用此代码以清除超时。
完整代码如下:
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,但你也可以看看here 描述的去抖动功能。
史蒂夫
【讨论】: