У мене є форма з декількома полями, які я перевіряю (деякі з методами, доданими для перевірки на замовлення) з відмінним плагіном jQuery Validation Jörn Zaeffere. Як ви обминаєте валідацію із заданими елементами подання (іншими словами, перевірка пожежі з деякими вхідними даними, але не проводите перевірку з іншими)? Це було б аналогічно ValidationGroups зі стандартними елементами контролю валідатора ASP.NET.
Моя ситуація:
Це з 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'
});