Jörn Zaeffere の優れた jQuery Validation プラグインを使用して検証している複数のフィールド (カスタム検証用に追加されたメソッドを含むもの) を持つフォームがあります。指定された送信コントロールで検証を回避するにはどうすればよいですか (つまり、一部の送信入力で検証を起動し、他の入力で検証を起動しません)。これは、標準の ASP.NET バリデータ コントロールを使用した ValidationGroups に似ています。
私の状況:
ASP.NET WebForms を使用していますが、必要に応じて無視できます。ただし、私はバリデーションを「推奨」として使用しています。つまり、フォームが送信されると、バリデーションが起動しますが、「必須」メッセージが表示される代わりに、「推奨」が表示され、「あなたは次のフィールドがありませんでした....続行しますか?」エラーコンテナのその時点で、検証を無視してとにかく送信する、押すことができる別の送信ボタンが表示されるようになりました。このボタン コントロールのフォーム .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'
});