jquery.validate v.1.9忽略了一些隐藏的输入

Omu*_*Omu 2 asp.net-mvc jquery jquery-validate unobtrusive-validation

使用版本1.7一切正常,所有隐藏的输入都得到验证,
但是版本1.9有些做,有些不用
我使用asp.net mvc 3和jquery.validate + jquery.unobtrusive(jquery 1.7.1)

这是生成的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>
Run Code Online (Sandbox Code Playgroud)

谁知道为什么会发生这种情况?

Emr*_*kan 7

使用1.9版本验证插件默认忽略:hidden元素.

另一个更改应该使隐藏元素的表单设置更容易,默认情况下现在忽略这些更改(选项"ignore"现在默认为":hidden").从理论上讲,这可能会打破现有的设置.在实际情况不太可能的情况下,您可以通过将ignore-option设置为"[]"(没有引号的方括号)来修复它.

因为您使用的是不显眼的版本,所以无法设置任何选项.所以你不要自己初始化插件,因此你必须在初始化之后改变它的设置.你可以像这样解决它:

var validatorSettings = $.data($('form')[0], 'validator').settings;
validatorSettings.ignore = "";
Run Code Online (Sandbox Code Playgroud)

此代码适用form于标记中的第一个元素,您可以指定表单并更改默认行为.