使用Asp.Net MVC3进行不显眼的验证。我有一个有几个输入字段的表单。其中一个领域非常简单:
<input id="Name" class="valid" type="text" value="" name="Name" data-val-required="Enter your name." data-val-length-min="5" data-val-length-max="50" data-val-length="Enter a valid name." data-val="true">
然后我有一些js验证表单并仅在客户端验证通过时提交它:
var $form = $('#contact_form');
var formAction = $form.attr('action');
var serialized = $form.serialize();
if ($form.validate().valid()) {...
现在最后一行总是返回true(是的,我启用了不显眼的)。但是,如果我将最后一行更改为:
if ($form.validate().element('#Name')) { ...
效果很好并且返回false。我有很多字段,并且不想迭代每个字段,并且很困惑为什么在验证整个表单时它说的是true但是验证每个单独的元素都正确地返回false。
我尝试过的事情: - 通过unobtrusive的$ .validator.parse重新解析表单(...无效。它不是动态表单,并在页面加载时呈现。
注意:我还检查了jquery(v1.6.2)jquery.validate.min.js(v1.8.1)和jquery.validate.unobtrusive.min.js是否已在浏览器中加载。
答案 0 :(得分:0)
您无需致电.validate()
,而是直接.valid()
:
if ($form.valid()) {
...
}