私は、JörnZaeffereの優れた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'
});