小编典典

jQuery Validation 插件:禁用对指定提交按钮的验证

all

我有一个包含多个字段的表单,我正在使用 Jörn Zaeffere 出色的 jQuery Validation
插件进行验证(有些添加了用于自定义验证的方法)。您如何规避使用指定提交控件的验证(换句话说,使用某些提交输入触发验证,但不触发其他输入验证)?这类似于具有标准
ASP.NET 验证器控件的 ValidationGroups。

我的情况:

它与 ASP.NET WebForms
一起使用,但如果您愿意,可以忽略它。但是,我更多地将验证用作“建议”:换句话说,当提交表单时,验证会触发,但不是显示“必需”消息,而是显示“建议”,其中包含“你错过了以下字段....您仍然要继续吗?”
那时,在错误容器中,现在可以看到另一个提交按钮,可以按下该按钮,它将忽略验证并提交。如何绕过此按钮控件的表单 .validate() 并仍然发布?

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'
});

阅读 153

收藏
2022-09-02

共1个答案

小编典典

您可以将 CSS 类添加cancel到提交按钮以禁止验证

例如

<input class="cancel" type="submit" value="Save" />

在此处查看此功能的 jQuery Validator 文档:Skipping validation on
submit


编辑

上述技术已被弃用并替换为formnovalidate属性。

<input formnovalidate="formnovalidate" type="submit" value="Save" />
2022-09-02