jQuery 验证重新初始化
jQuery Validate Re-initialize
我的情况是需要在提交前验证表单。我目前正在使用 jQuery 验证插件。然而,根据单选按钮的值,它只需要验证某些字段。
我认为能够重新初始化验证插件会起作用,但是当在表单上调用 .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();
}
});
我知道我可以简单地 add/remove 每个元素的附加规则。使用 .rules({}) 语法。但是想知道是否有办法重新初始化表单上的验证插件。
I understand that I could simply add/remove the additional rules for each element. using the .rules({})
syntax. But wondering if there is a way to reinitialize the validate plugin on the form.
没有。没有重新初始化插件的方法。 .validate()
是初始化方法,它只在表单上调用一次。始终忽略所有后续调用。
.valid()
方法用于随时以编程方式强制执行验证测试。
开发者给你.rules()
方法的主要目的是让规则可以改变而不用担心重新初始化。
我的情况是需要在提交前验证表单。我目前正在使用 jQuery 验证插件。然而,根据单选按钮的值,它只需要验证某些字段。
我认为能够重新初始化验证插件会起作用,但是当在表单上调用 .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();
}
});
我知道我可以简单地 add/remove 每个元素的附加规则。使用 .rules({}) 语法。但是想知道是否有办法重新初始化表单上的验证插件。
I understand that I could simply add/remove the additional rules for each element. using the
.rules({})
syntax. But wondering if there is a way to reinitialize the validate plugin on the form.
没有。没有重新初始化插件的方法。 .validate()
是初始化方法,它只在表单上调用一次。始终忽略所有后续调用。
.valid()
方法用于随时以编程方式强制执行验证测试。
开发者给你.rules()
方法的主要目的是让规则可以改变而不用担心重新初始化。