jQuery验证重新初始化

瓦列克洛斯(Valeklosse)

我遇到一种情况,需要在提交之前验证表单。我目前正在使用jQuery validate插件。但是,取决于单选按钮的值,它仅需要验证某些字段。

我以为能够重新初始化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插件。

活泼的

我知道我可以简单地为每个元素添加/删除其他规则。使用.rules({})语法。但是,想知道是否有一种方法可以重新初始化表单上的validate插件。

否。没有用于重新初始化插件的方法。.validate()是初始化方法,仅在表单上被调用一次。所有后续调用始终被忽略。

.valid()方法用于随时以编程方式强制执行验证测试。

开发人员为您提供.rules()方法的重点是可以更改规则而不必担心重新初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章