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

标签 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. 如果用户在同一 session 中再次提交,请从第 1 步开始重复。

最佳答案

试试这个:

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

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

setTimeout 调用将在 3 秒后取消与模糊事件的绑定(bind),从而导致该事件不会触发。

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

关于javascript - 提交时,X 秒后,如果窗口模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940630/

相关文章:

javascript - 通过使用 Javascript 单击图片来更改图片

jquery - 如何使用 jQuery 添加和删除事件类?

javascript - JQuery/JavaScript - 突出显示输入或文本区域中的一部分文本

java - 不使用 JFrame 创建屏幕(窗口)

c# - 如何使 .NET 窗体始终位于另一个应用程序之上?

JavaScript 无法对 £ 符号进行编码

javascript - 检测用户 browser-height >= page body-height

javascript - Polymer 中的事件委托(delegate)

javascript - IE 不支持 JQuery window.location.hash?

jquery - 窗口未定义,文档未定义- Electron