Javascript 与事件关联的setTimeout函数
当用户在我的输入中输入1秒后的数字时,我希望能够调用我的setTimeout函数 但问题是,我希望此事件只调用一次,例如,当用户在不到1s的时间内输入3数字,如200 如果用户输入3个数字(如200),我下面的代码将被调用3次Javascript 与事件关联的setTimeout函数,javascript,jquery,Javascript,Jquery,当用户在我的输入中输入1秒后的数字时,我希望能够调用我的setTimeout函数 但问题是,我希望此事件只调用一次,例如,当用户在不到1s的时间内输入3数字,如200 如果用户输入3个数字(如200),我下面的代码将被调用3次 $('input.amount').on('input.amount',function(e){ setTimeout(function() { // code }, 1000); }); 因此,
$('input.amount').on('input.amount',function(e){
setTimeout(function() {
// code
}, 1000);
});
因此,我希望此代码只调用一次您可以保留一个变量,告诉您用户是否已经键入了字符。然后,仅在变量尚未设置时触发函数。例如:
var started = false;
$('input.amount').on('input',function(e){
if(!started){
started = true;
setTimeout(function() {
// code
started = false;//to reset so that further typing will trigger again
}, 1000);
}
});
我会采取的一种方法是将执行延迟到最后一次输入后1000毫秒
var timer;
$('input.amount').on('input.amount', function (e) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
// code
timer = undefined;
}, 1000);
});
@如果在第一个超时完成之前触发第二个输入事件,那么第一个超时将被取消,然后我们将创建一个新的超时…谢谢,我认为您的解决方案更适合我的情况。您的解决方案是我问题的答案,但当我看到@ArunPJohny的解决方案时,它更适合,因为事件直到最后一次输入时才会触发,即使用户花5秒在输入中输入值