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

时间:2012-06-07 22:16:23

标签: javascript jquery window onblur

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

目前我有这个:

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

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

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

  1. 用户提交表单
  2. 在3秒的时间内,如果窗口失去焦点,请执行console.log(a);
  3. 3秒后,如果窗口失去焦点什么都不做。
  4. 如果用户在同一会话中再次提交,请从步骤1开始重复。

1 个答案:

答案 0 :(得分:2)

试试这个:

$("#form").on("submit",function(){
    var blurFunc = function() {
        console.log(a);
    }

    $(window).blur(blurFunc);
    setTimeout(function() { $(window).unbind('blur', blurFunc); }, 3000);
});

{3}之后,setTimeout调用将从模糊事件中解除绑定,导致事件无法触发。

有关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);
});