在关注元素后执行javascript

时间:2010-11-30 19:15:00

标签: javascript

我不仅需要在用户移动到下一个字段时运行execFunc();,还要在用户仍然专注于同一个字段5秒钟时运行。

$('input[name="email"]').bind('blur', function () {
 execFunc();
});

3 个答案:

答案 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);
      });