2013-06-03 22 views
1

我有一個窗體,顯示客戶端驗證,因爲用戶輸入信息和一段時間後襬脫錯誤消息的jQuery腳本。Rails&jQuery - 如何讓腳本刪除HTML元素多次工作

但是,該腳本只能在每頁加載一次。我對jQuery不是很瞭解,所以我只是想知道如何讓它在每個驗證消息上工作?

它目前工作正常,只是第一個錯誤信息:

這是代碼逐字在我的軌道.js文件:

window.setTimeout(function() { 
    $(".field_with_errors label").fadeTo(300, 0).slideUp(300, function(){ 
    $(this).remove(); 
    }); 
}, 4000); 

----更新

只是要明確:我使用稱爲客戶端驗證的Rails gem,每次在此頁面的表單中輸入無效數據時會生成新的HTML。

+0

你是什麼意思只工作一次?如果你將setTimeout包裝在一個命名的函數中以後再調用它,它不起作用? – NicoSantangelo

+0

我的意思是,一旦出現第一條錯誤信息,腳本就會將其刪除,但如果另一個字段中的表單出現在另一個表單上,它將保留。 – Zephyr4434

回答

1

你必須出現在每一錯誤消息後顯式調用你的函數,那麼,你可以這樣做:

var cleanUpErrorMessages = function() { 
    window.setTimeout(function() { 
     $(".field_with_errors label").fadeTo(300, 0).slideUp(300, function(){ 
      $(this).remove(); 
     }); 
    }, 4000); 
} 

//... 
//A new error appears, then: 
cleanUpErrorMessages(); 

如果您正在使用的客戶端驗證,看看在文檔中callbacks,但我認爲你需要的是:

window.ClientSideValidations.callbacks.element.fail = function(element, message, callback) { 
    callback(); 
    if (element.data('valid') !== false) { 
    cleanUpErrorMessages(); 
    } 
} 
+0

是的!正是我所期待的,謝謝 – Zephyr4434

+0

不客氣! – NicoSantangelo