我不仅需要在用户移动到下一个字段时运行execFunc();
,还要在用户仍然专注于同一个字段5秒钟时运行。
$('input[name="email"]').bind('blur', function () {
execFunc();
});
答案 0 :(得分:1)
var timer = null;
$('input[name="email"]').blur(function(e){
if (timer) clearTimeout(timer);
execFunc();
}).focus(function(e){
timer = setTimeout(execFunc, 5000);
});
如果您正在进行表单验证,可以采用更好的方法。
答案 1 :(得分:0)
怎么样......
$('input[name="email"]').bind('blur', execFunc).bind('focus', function() {
setTimeout(execFunc, 5000);
});
如果该函数不是幂等的,并且您必须只执行一次,则可以执行以下操作:
var execFuncHasExecuted = false;
function execFunc() {
if (execFuncHasExecuted)
return false;
execFuncHasExecuted = true;
// ... remainder of implementation
}
答案 2 :(得分:0)
这应该足够了
var g_timeout = null;
$('input[name="email"]')
.blur(function () {
execFunc();
})
.focus(function(){
if (g_timeout) clearTimeout(g_timeout);
g_timeout= setTimeout(execFunc, 5000);
});