我不仅需要在用户移动到下一个字段时运行execFunc();
,还需要在用户在同一个字段中持续5秒钟的焦点时运行。在关注元素后执行javascript
$('input[name="email"]').bind('blur', function() {
execFunc();
});
我不仅需要在用户移动到下一个字段时运行execFunc();
,还需要在用户在同一个字段中持续5秒钟的焦点时运行。在关注元素后执行javascript
$('input[name="email"]').bind('blur', function() {
execFunc();
});
var timer = null;
$('input[name="email"]').blur(function(e){
if (timer) clearTimeout(timer);
execFunc();
}).focus(function(e){
timer = setTimeout(execFunc, 5000);
});
如果您'正在进行表单验证,有更好的方法来做到这一点。
......怎么
$('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
}
这将执行execFunc两次,如果用户在5秒钟之前模糊了字段。 – zzzzBov 2010-11-30 19:22:03
应该注意的是,VoteyDisciple的第一个代码示例使用[jQuery](http://jquery.com/)。 – sholsinger 2010-11-30 19:24:43
这应该足够了
var g_timeout = null;
$('input[name="email"]')
.blur(function() {
execFunc();
})
.focus(function(){
if (g_timeout) clearTimeout(g_timeout);
g_timeout= setTimeout(execFunc, 5000);
});
你怎么样*不*做到这一点? ;) – Alex 2010-11-30 19:22:26