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>
任何人都知道为什么会发生这种情况?
答案 0 :(得分:7)
使用1.9版本验证插件会忽略default之后的:hidden
元素。
另一个更改应该是使用隐藏元素设置表单 更容易,这些现在默认被忽略(选项“忽略”有 “:隐藏”现在默认为)。从理论上讲,这可能打破现有的局面 建立。在实际情况不太可能发生的情况下,您可以通过修复它 将ignore-option设置为“[]”(方括号不带 引号)。
由于您使用的是不显眼的版本,因此无法设置任何选项。所以你不要自己初始化插件,因此你必须在初始化之后改变它的设置。你可以像这样解决它:
var validatorSettings = $.data($('form')[0], 'validator').settings;
validatorSettings.ignore = "";
此代码适用于标记中的第一个form
元素,您可以指定表单并更改默认行为。