2013-02-08 58 views
0

我試圖運行一段代碼,存儲形式的值到每一個XXXX秒分貝的運行代碼,這應該如果用戶使用的形式首次只能運行所以我想爲此使用一個基本的焦點事件,這是有效的,但這意味着每次用戶專注於一個字段時,代碼將再次運行,但不會在xxxx秒後運行。jQuery的:在第一次使用的表單

所以,我需要一種方式,如果用戶開始使用的形式,它應該運行setInterval函數每XXXX秒,而不是每次專注於一個領域的用戶。

//基本的例子

$('form').on('focus', 'input, textarea, select', function(){ 
    setInterval(function(){ 
     //run code into db 
     alert('saved'); 
    },10000); 
}); 

回答

4

您可以使用one

$('form').one('focus', 'input, textarea, select', function(){ 
    setInterval(function(){ 
     //run code into db 
     alert('saved'); 
    },10000); 
}); 

但這將執行每個元素一個時間,所以恐怕最好的解決方案是不是這樣的魅力:

$('form').one('focus', 'input, textarea, select', function(){ 
    if ($(this.form).data('done')) return; 
    $(this.form).data('done', 'yes'); 
    setInterval(function(){ 
     //run code into db 
     alert('saved'); 
    },10000); 
}); 

或:

var doit = function() { 
    setInterval(function(){ 
     //run code into db 
     alert('saved'); 
    },10000); 
    $('form').off('focus', 'input, textarea, select', doit); 
}; 
$('form').on('focus', 'input, textarea, select', doit); 
+0

我有多愚蠢....謝謝!!! – user759235 2013-02-08 21:40:49

相關問題