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

时间:2011-12-19 17:37:06

标签: jquery asp.net-mvc 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>

任何人都知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:7)

使用1.9版本验证插件会忽略default之后的:hidden元素。

  

另一个更改应该是使用隐藏元素设置表单   更容易,这些现在默认被忽略(选项“忽略”有   “:隐藏”现在默认为)。从理论上讲,这可能打破现有的局面   建立。在实际情况不太可能发生的情况下,您可以通过修复它   将ignore-option设置为“[]”(方括号不带   引号)。

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

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

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