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