禁用后重新启用jQuery验证

时间:2015-06-18 08:20:03

标签: jquery jquery-validate unobtrusive-validation

我有一个MVC项目,我使用内置验证,使用jquery.validate.js和jquery.validate.unobtrusive.js进行数据注释。这一切都很好,我的表格将验证。

在一个表单上,我有一个邮政编码查找按钮,因此我通过在按钮中添加formnovalidate属性来使用建议来禁用此按钮的验证。这也很好,并允许我提交表单,使用ajax进行我的邮政编码查找。

单击此按钮后,我可以单击主提交按钮,它将发布表单而不进行任何验证。

我查看了jquery.validate.js文件并看到使用此代码取消验证:

// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
if ( $(event.target).attr("formnovalidate") !== undefined ) {
    validator.cancelSubmit = true;
}

然后我可以通过以下方式重新启用它:

if ( event.target.id == 'submit' ) {
    validator.cancelSubmit = false;
}

但是我不想更改源文件,就像我使用nuget进行更新一样,我可能会忘记我已经更改了该文件并忘记将该行重新放入。

如何将validator.cancelSubmit = false;绑定到按钮点击 - 这样的事情(由于我没有validator对象,这将无效):

$('#submit').on('click', function() {
    validator.cancelSubmit = false;
});

我尝试使用$.validator.cancelSubmit = false;,但这不起作用

1 个答案:

答案 0 :(得分:2)

您可以使用validator

访问data()对象
$(yourForm).data('validator').cancelSubmit = false;