提交时,X 秒后,如果窗口模糊



我正在尝试确定窗口在提交 3 秒后是否失去焦点。

目前我有这个:

$("input").on("submit",function(){
$(window).blur(function(){
  console.log(a);
})
});

但是,无论您何时按提交,如果您在窗口外单击或最小化窗口,console.log都会触发a

这就是我想要实现的目标:

  1. 用户提交表单
  2. 在 3 秒内,如果窗口失去焦点,请执行控制台.log(a);
  3. 3 秒后,如果窗口失去焦点,则不执行任何操作。
  4. 如果用户在同一会话上再次提交,请从步骤 1 开始重复。

试试这个:

$("#form").on("submit",function(){
    var blurFunc = function() {
        console.log(a);
    }
    $(window).blur(blurFunc);
    setTimeout(function() { $(window).unbind('blur', blurFunc); }, 3000);
});

setTimeout调用将在 3 秒后从模糊事件取消绑定,从而导致事件不触发。

有关setTimeout的更多信息,请参阅此处:http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

或者,您可以执行以下操作:

$("#form").on("submit",function(){
    var submitted = true;
    var blurFunc = function() {
        if(submitted) {
            console.log(a);
        } 
    }
    $(window).blur(blurFunc);
    setTimeout(function() { submitted = false; }, 3000);
});

最新更新