2012-09-28 100 views
2

嗨,感謝您花時間回答我的問題。自定義驗證規則 - jQuery驗證Egine

我需要在驗證引擎中創建一個驗證規則,它不會允許值爲0(意味着至少要選擇一個元素)。我有一個select元素,並且默認(請選擇一個項目)的值爲0,因爲它不是必需的。但是一旦選中複選框,我需要使其成爲必需。我無法添加'validate [required]'類,因爲0是有效值。所以我的問題是如何制定一個自定義的規則,它不允許將值0傳遞給控制器​​。

再次感謝

回答

2

我認爲這是沒有必要的自定義驗證。您可以在複選框被選中時通過jquery添加必要的屬性,並在取消選中時刪除該屬性(並在文檔準備第一次加載時檢查它)。 例如:

$('#myCheckBox').click(function() { 
      if ($(this).is(':checked')) { 
       $('#myDropDown').removeAttr('required'); 
      } 
      else { 
       $('#myDropDown').attr('required', true); 
      } 
     }); 

但在這種情況下,你<option>值應該是空的。 <option value>Please select an item</option>(因爲我知道這是dropdownlists的常見行爲)。之後,jquery驗證插件將自動驗證所需的屬性。

編輯

好吧,如果你一定要使用自定義的驗證,可以這樣來做:

1)添加您的驗證方法(在文件準備實例)

$.validator.addMethod("checkIfNotZero", function (value, element) { 
      return this.optional(element) || ($('#checkbox').is(':checked')&&value!=0); 
     }, "Please, select value"); 
$.validator.addClassRules("mySpecificClass", { checkIfNotZero: true }); 

2)記住你DROPDOWNLIST與class="mySpecificClass"

3),並檢查是否$('#myDropDown').valid()必要的地方(或者在onSubmit事件處理程序中調用$(form).validate())。

我認爲就是這樣。希望它會有所幫助。

+0

不能讓它爲空,因爲它不是必需的..默認情況下..在控制器中,我已將所有選擇元素映射到long []。因此,如果我在控制器中收到一個值爲「」的值,那麼我會有一段糟糕的時間 – Dragan

+0

spasiba alexey! – Dragan

+0

隨時歡迎;) –