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