我正在尝试确定窗口在提交 3 秒后是否失去焦点。
目前我有这个:
$("input").on("submit",function(){
$(window).blur(function(){
console.log(a);
})
});
但是,无论您何时按提交,如果您在窗口外单击或最小化窗口,console.log
都会触发a
。
这就是我想要实现的目标:
- 用户提交表单
- 在 3 秒内,如果窗口失去焦点,请执行控制台.log(a);
- 3 秒后,如果窗口失去焦点,则不执行任何操作。
- 如果用户在同一会话上再次提交,请从步骤 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);
});