У меня возникла ситуация, когда форма должна быть проверена перед отправкой. В настоящее время я использую плагин проверки jQuery. Однако в зависимости от значения радиокнопки ему нужно только проверить определенные поля.jQuery Validate Re-initialize
Я думал, что возможность повторной инициализации плагина validate будет работать, но при вызове .valid в форме он не проверяет дополнительные поля.
Это мой jQuery для инициализации проверки.
var minVal = function() {
$("#user-details-form").validate({
errorClass: "text-danger",
rules: {
DeliveryFirstname: { required: true },
DeliverySurname: { required: true },
DeliveryCompanyName: { required: true },
DeliveryPostcode: { required: true, postcodeUK: true },
DeliveryAddress1: { required: true },
DeliveryCity: { required: true },
EmailAddress: { required: true, email: true },
Telephone: { required: true }
},
messages: {
DeliveryFirstname: { required: "First name required" },
DeliverySurname: { required: "Last name required" },
DeliveryCompanyName: { required: "Company name required" },
DeliveryPostcode: { required: "Postcode required", postcodeUk: "Invalid postcode" },
DeliveryAddress1: { required: "First line of address required" },
DeliveryCity: { required: "City required" },
EmailAddress: { required: "Email address required", email: "Invalid email address" },
Telephone: { required: "Telephone number required" }
}
});
};
var maxVal = function() {
$("#user-details-form").validate({
errorClass: "text-danger",
rules: {
DeliveryFirstname: { required: true },
DeliverySurname: { required: true },
DeliveryCompanyName: { required: true },
DeliveryPostcode: { required: true, postcodeUK: true },
DeliveryAddress1: { required: true },
DeliveryCity: { required: true },
InvoiceFirstname: { required: true },
InvoiceSurname: { required: true },
InvoiceCompanyName: { required: true },
InvoicePostcode: { required: true, postcodeUK: true },
InvoiceAddress1: { required: true },
InvoiceCity: { required: true },
EmailAddress: { required: true, email: true },
Telephone: { required: true }
},
messages: {
DeliveryFirstname: { required: "First name required" },
DeliverySurname: { required: "Last name required" },
DeliveryCompanyName: { required: "Company name required" },
DeliveryPostcode: { required: "Postcode required", postcodeUk: "Invalid postcode" },
DeliveryAddress1: { required: "First line of address required" },
DeliveryCity: { required: "City required" },
InvoiceFirstname: { required: true },
InvoiceSurname: { required: true },
InvoiceCompanyName: { required: true },
InvoicePostcode: { required: true, postcodeUK: true },
InvoiceAddress1: { required: true },
InvoiceCity: { required: true },
EmailAddress: { required: "Email address required", email: "Invalid email address" },
Telephone: { required: "Telephone number required" }
}
});
};
И это метод радио-кнопка изменения (для справки)
$('input[name="IsInvoiceAddress"]:radio').on("change", function() {
var b = ($(this).val().toLowerCase() === "true");
if (!b) {
console.log("max val");
maxVal();
} else {
console.log("min val");
minVal();
}
});
Я понимаю, что я мог бы просто добавить/удалить дополнительные правила для каждого элемента. используя синтаксис .rules ({}). Но интересно, есть ли способ повторно инициализировать плагин validate в форме.
Благодарим вас за подтверждение. У меня есть форма, теперь работающая, добавляя и удаляя дополнительные правила, когда переключатель был изменен. – Valeklosse