2

與1.7版的一切工作正常,所有隱藏的投入得到驗證,
與1.9版本的一些做,有些不
我使用asp.net的MVC 3和jquery.validate + jquery.unobtrusive(jQuery的1.7.1)jquery.validate訴1.9忽略了一些隱藏的輸入

,這是生成的HTML:

<!--this gets validated--> 
     <input type="hidden" data-val="true" data-val-number="The field Chef must be a number." data-val-required="The Chef field is required." value="" name="Chef" id="Chef">  
<span data-valmsg-replace="true" data-valmsg-for="Chef" class="field-validation-valid"></span> 

    <!--this one is ignored--> 
     <input type="hidden" data-val="true" data-val-number="The field MyFruit must be a number." data-val-required="The MyFruit field is required." value="" name="MyFruit" id="MyFruit"> 
<span data-valmsg-replace="true" data-valmsg-for="MyFruit" class="field-validation-valid"></span> 

有人知道爲什麼會這樣呢?

回答

7

隨着1.9版本驗證插件忽略:hidden元素由default

另一個變化應的形式設置有隱藏要素 更容易,這些都是現在默認忽略(選擇「忽略」了 「:隱藏」現在爲默認值)。理論上,這可能會破壞現有的 設置。在實際情況不太可能的情況下,您可以通過 將ignore-option設置爲「[]」(不包含 引號的方括號)將其修復。

因爲您使用的是不顯眼的版本,所以不能設置任何選項。所以你不要自己初始化插件,因此你必須在初始化之後改變它的設置。你能解決這個問題是這樣的:

var validatorSettings = $.data($('form')[0], 'validator').settings; 
validatorSettings.ignore = ""; 

此代碼適用於第一form元素的標記,您可以指定表格(S)和更改默認行爲。

+1

難道你沒有得到這個在你的代碼示例中倒退? _「方括號**沒有**引號」_ – Sparky 2011-12-19 17:54:53

+0

@ Sparky672我更新了我的答案,我忘了說點什麼。 – 2011-12-19 18:02:14

+0

第一個輸入即使被隱藏,也會得到驗證 – Omu 2011-12-19 18:05:20