与事件关联的setTimeout函数

时间:2014-11-14 04:23:48

标签: javascript jquery

我希望能够在用户在1s后输入一个数字时调用我的setTimeout函数。

但问题是我希望此事件只调用一次,例如当用户在小于1秒的时间内输入 3 数字(如 200 )时。

如果用户输入3个数字,如200

,则下面的代码被称为3次
    $('input.amount').on('input.amount',function(e){

        setTimeout(function() {
            // code
        }, 1000);
    });

所以我希望这个代码只被调用一次

2 个答案:

答案 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);
});