我希望能够在用户在1s后输入一个数字时调用我的setTimeout函数。
但问题是我希望此事件只调用一次,例如当用户在小于1秒的时间内输入 3 数字(如 200 )时。
如果用户输入3个数字,如200
,则下面的代码被称为3次 $('input.amount').on('input.amount',function(e){
setTimeout(function() {
// code
}, 1000);
});
所以我希望这个代码只被调用一次
答案 0 :(得分:3)
您可以保留一个变量,告诉您用户是否已键入字符。然后仅在尚未设置变量时触发该函数。例如:
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);
}
});
答案 1 :(得分:1)
我要采取的一种方法是将执行延迟到最后一次输入后的1000ms
var timer;
$('input.amount').on('input.amount', function (e) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
// code
timer = undefined;
}, 1000);
});