最佳答案
我有一个带有多个字段的表单,我正在使用 Jörn Zaeffere 出色的 jQuery 验证插件进行验证(其中一些添加了用于自定义验证的方法)。如何使用指定的提交控件规避验证(换句话说,使用某些提交输入触发验证,但不使用其他提交输入触发验证) ?这将类似于带有标准 ASP.NET 验证程序控件的 ValidationGroup。
我的情况:
它与 ASP.NET WebForms 一起使用,但是如果您愿意,可以忽略它。然而,我更多地使用验证作为一个“推荐”: 换句话说,当表单提交时,验证会启动,但不是显示一个“必需的”消息,而是一个“推荐”显示一些东西沿着“你错过了以下字段..。你还想继续吗?”在这个错误容器中,现在可以看到另一个提交按钮,可以按下这个按钮,它将忽略验证并提交。如何规避表单。验证()这个按钮控件,仍然后?
在 http://jquery.bassistance.de/validate/demo/multipart/上的 Buy and Sell a House 示例允许这样做,以便访问以前的链接,但它是通过创建自定义方法并将其添加到验证程序来实现这一点的。我希望不必创建自定义方法来复制验证插件中已有的功能。
下面是我现在得到的即时应用脚本的简化版本:
var container = $("#<%= Form.ClientID %> div.validationSuggestion");
$('#<%= Form.ClientID %>').validate({
errorContainer: container,
errorLabelContainer: $("ul",container),
rules: {
<%= YesNo.UniqueID %>: { required: true },
<%= ShortText.UniqueID %>: { required: true } // etc.
},
messages: {
<%= YesNo.UniqueID %>: 'A message.',
<%= ShortText.UniqueID %>: 'Another message.' // etc.
},
highlight: function(element, errorClass) {
$(element).addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass("valid");
},
unhighlight: function(element, errorClass) {
$(element).removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").removeClass(errorClass);
$(element.form).find("label[for=" + element.id + "]").addClass("valid");
},
wrapper: 'li'
});