我有一个包含多个字段的表单,我正在使用Jörn Zaeffere优秀的jQuery验证插件对其进行验证(其中一些带有为自定义验证添加的方法)。如何使用指定的提交控件规避验证(换句话说,对某些提交输入触发验证,但不对其他输入触发验证)?这将类似于具有标准ASP.NET验证器控件的ValidationGroups。
我的情况:
它是由ASP.NET WebForms提供的,但是如果你愿意,你可以忽略它。但是,我更多地将验证用作“建议”:换句话说,当表单提交时,验证将触发,但显示的不是“必需”消息,而是“建议”,它会显示类似“您遗漏了以下字段……是否仍要继续?”的内容。此时,在error容器中有另一个可见的submit按钮,可以按下该按钮忽略验证并提交。如何绕过此按钮控件的表单.validate()并仍然开机自检?
http://jquery.bassistance.de/validate/demo/multipart/上的买卖房屋示例允许这样做,以便点击前面的链接,但它是通过创建自定义方法并将其添加到验证器来实现这一点的。我不希望创建自定义方法复制验证插件中已有的功能。
以下是我现在得到的立即适用的脚本的简短版本:
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'
});
发布于 2010-05-21 12:07:36
另一种(未记录的)方法是调用:
$("form").validate().cancelSubmit = true;
在按钮的单击事件上(例如)。
发布于 2015-07-28 07:26:33
还有另一种(动态)方式:
$("form").validate().settings.ignore = "*";
要重新启用它,我们只需重新设置默认值:
$("form").validate().settings.ignore = ":hidden";
来源:https://github.com/jzaefferer/jquery-validation/issues/725#issuecomment-17601443
发布于 2015-04-14 05:09:51
将formnovalidate属性添加到输入
<input type="submit" name="go" value="Submit">
<input type="submit" formnovalidate name="cancel" value="Cancel">
现在不推荐添加class="cancel“
有关在此link上提交时跳过验证的信息,请参阅文档
https://stackoverflow.com/questions/203844
复制相似问题