使用不显眼的验证适用于单个元素,但不适用于整个表单

Using unobtrusive validation works on individual elements but not the whole form

提问人:TimJohnson 提问时间:10/8/2011 更新时间:10/8/2011 访问量:1348

问:

使用具有不显眼验证的 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中是否加载了。

asp.net-mvc-3 unobtrusive-javascript jquery-validate

评论


答:

0赞 Darin Dimitrov 10/8/2011 #1

您不必打电话,而是直接拨打:.validate().valid()

if ($form.valid()) {
    ...
}