Saya memiliki formulir dengan beberapa bidang yang saya validasi (beberapa dengan metode yang ditambahkan untuk validasi khusus) dengan plugin jQuery Validation yang sangat baik dari Jörn Zaeffere. Bagaimana Anda menghindari validasi dengan kontrol pengiriman yang ditentukan (dengan kata lain, memvalidasi validasi dengan beberapa input input, tetapi jangan memecat validasi dengan yang lain)? Ini akan mirip dengan ValidationGroups dengan kontrol validator ASP.NET standar.
Situasi saya:
Ini dengan ASP.NET WebForms, tetapi Anda bisa mengabaikannya jika mau. Namun, saya menggunakan validasi lebih sebagai "rekomendasi": dengan kata lain, ketika formulir dikirimkan, validasi akan ditampilkan tetapi alih-alih menampilkan pesan "wajib", "rekomendasi" menunjukkan yang mengatakan sesuatu di sepanjang baris "Anda" merindukan bidang berikut .... apakah Anda ingin melanjutkan? Pada titik itu di wadah kesalahan ada tombol kirim lain sekarang terlihat yang dapat ditekan yang akan mengabaikan validasi dan mengirim lagian. Bagaimana cara menghindari formulir .validate () untuk kontrol tombol ini dan masih memposting?
Sampel Beli dan Jual Rumah di http://jquery.bassistance.de/validate/demo/multipart/ memungkinkan ini untuk mencapai tautan sebelumnya, tetapi ia melakukannya dengan membuat metode khusus dan menambahkannya ke validator. Saya lebih suka tidak harus membuat fungsionalitas duplikasi metode kustom yang sudah ada di plugin validasi.
Berikut ini adalah versi singkat dari skrip yang langsung berlaku yang saya miliki sekarang:
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'
});