我不僅需要在用戶移動到下一個字段時運行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