2012-08-31 33 views
0

我已經從bassistance.de實現了jQuery驗證插件,並通過在每個我想驗證的表單下面手動定義規則來使用它。 我想修改在腳本初始化完成後根據需要定義的字段(例如給它們一個邊框顏色),但我似乎無法找到通用的「加載」回調,事件或擴展可能性。使用jQuery驗證規則來標記必填字段

每次$('#form').validate(..)完成初始化時,有沒有辦法執行腳本?

我解決它現在的方法如下:

$(document).ready(function() { 
    $('#myForm').validate({ 
     rules: { 
      txtCode: { required: true, maxlength: 12 }, 
      txtName: { required: true, maxlength: 50 }, 
     } 
    }); 
    $('#myForm').highlightRequiredFields(); 
}); 

..其中highlightRequiredFields()是一個簡單的jQuery插件我寫了修改所需文本框。我只是不那麼熱衷於複製這條線到我所有的表單驗證。

+0

嗨Leon。我對你使用的插件不熟悉,但是你可以通過'.promise()'方法的實現來實現這一點(這是相當新的)。但是,如果您之前沒有使用過,請務必仔細閱讀相關文檔 - 該方法中有幾個可能的解決方案。此外,'.promise()'方法將幫助您在集合上的所有操作完成後開始操作。 –

+0

你可以使用'validate'的選項'submitHandler'來運行你的高亮功能嗎? (而不是提交表單)http://docs.jquery.com/Plugins/Validation/validate#options – Chase

+0

謝謝你們。 @Chase,我想在提交之前突出字段,所以'submitHandler'不適合我。 @Zachary,'promise'方法沒有提供一種方法來向腳本添加一個通用處理程序,據我所知? – Leon

回答

0

謝謝大家。 Zachary的迴應讓我意識到這比我想象的要容易得多。 我最終增加了這個過載:

(function($) { 
    $.fn.extend({ 
     validateAndMarkRequired: function(options) { 
      var validator = this.validate(options); 
      this.markRequiredFields(); 
      return validator; 
     } 
    }); 
})(jQuery); 
1

爲什麼不簡單地使用CSS進行更改?我有一堆規則&甚至有一些JS行可以在需要的類中自動運行,並且一旦它們有效/錯誤,其他事情(我想要的)就會發生在他們身上。

否則,你必須最有可能在$.fn.validate()插件本身內進行更改。

+1

正如我在上面的評論中所說的那樣,我對他使用的驗證插件並不熟悉,但是如果他想要做的就是在回調中添加對CSS更改的支持,他不能簡單地向該插件添加重載調用調用「內置的''。。。。。。。。。。。。。。。。n。n。()'並在之後立即調用他的CSS更改? –

+0

謝謝!我不能用CSS做更改,因爲我更喜歡手動添加規則,而不是通過添加類。當我手動添加這些規則時,插件不會添加'required'類。看起來我真的必須將代碼插入到插件腳本中。 – Leon

1

我會干擾驗證插件的init方法來執行您的highlightRequiredFields插件。

不要忘記檢查是否有這個插件可用,所以如果在沒有其他地方使用高亮的情況下驗證不會中斷。

+0

感謝您的回覆!把它放到init函數中確實是我的最後一次調用。我寧願沒有在插件腳本中使用它,因爲當同事決定將其新版本添加到項目中時,它會被覆蓋。這就是爲什麼我想知道是否有更好的方法:) – Leon