1. ホーム
  2. jquery

[解決済み] jQuery Validation プラグイン:指定した送信ボタンのバリデーションを無効にする

2022-04-23 23:34:07

質問

Jörn Zaeffereの優れたjQuery Validationプラグインで検証している(一部はカスタム検証のためにメソッドを追加した)複数のフィールドを持つフォームを持っています。指定した送信コントロールでバリデーションを回避するにはどうしたらよいでしょうか(言い換えれば、ある送信入力でバリデーションを発生させ、他の入力ではバリデーションを発生させない)?これは、標準的なASP.NETバリデータコントロールのValidationGroupsに似ています。

私の状況

ASP.NET WebFormsとのことですが、それは無視していただいて結構です。言い換えれば、フォームが送信されると、バリデーションが発生しますが、"required"のメッセージが表示されるのではなく、"recommendation"が表示され、「次のフィールドを見逃しています... とにかく続けますか」というような内容が書かれています。このボタンコントロールのフォームの.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'
}); 

解決方法は?

のCSSクラスを追加することができます。 cancel を送信ボタンに設定すると、バリデーションが抑止されます。

例えば

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

この機能に関するjQuery Validatorのドキュメントはこちらをご覧ください。 送信時のバリデーションをスキップする


エディテージ :

上記の手法は非推奨となり、代わりに formnovalidate 属性を持つ。

<input formnovalidate="formnovalidate" type="submit" value="Save" />