自定义jQuery验证.addMethod

前端之家收集整理的这篇文章主要介绍了自定义jQuery验证.addMethod前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个表格,以最小/最大长度为基础验证邮政编码.我需要为所有国家/地区提供5位数的邮政编号,除非澳大利亚需要为4.
以下是我遇到的问题:
$.validator.addMethod(
    "AusZip",function(value,element) {
        if ($("#Country").val("Aus") && ("#PostalCode").length < 4)) {
        return false;
    } else return true;
},"Australian Zip Code Must Be at least 4 Digits");

然后在规则中

rules: {
    PostalCode: {
        required: true,minlength: 5 //for all countries except AUS
        AusZip: true // for Aus
    }
}

长度不是要走的路吗?

解决方法

我假设所有验证规则都必须通过,这意味着如果长度为4,则minlength将始终失败.

此外,你错过了$before(“#PostCode”).长度.

此行也设置了#Country的值.

$("#Country").val("Aus")

您想获得该值,并将其与“Aus”进行比较.

$("#Country").val() === "Aus"

尝试删除minlength,并更改自定义功能.

试试这个:

编辑:更改,以便您有2个验证器.

一个人验证该县是澳大利亚,并且该值的长度至少为4.

另一个验证该县不是澳大利亚,并且该值的长度至少为5.

$.validator.addMethod("AusZip",element) {
    var isAus = $("#Country").val() === "Aus";

    if ( isAus && value.length < 4 ) {
        return false;
    } else return true;

},"Australian Zip Code Must Be at least 4 Digits");

$.validator.addMethod("NonAusZip",element) {
    var isNotAus = $("#Country").val() !== "Aus";

    if ( isNotAus && value.length < 5 ) {
        return false;
    } else return true;

},"Zip Code Must Be at least 5 Digits");


$('form').validate({
    rules: {
        PostalCode: {
            required: true,AusZip: true,NonAusZip: true
        }
    }
});​

或者,如果您不需要基于国家/地区的自定义验证消息,则可以执行以下操作:

$.validator.addMethod("GlobalZip",element) {
    var isAus = $("#Country").val() === "Aus";

    if ( ( isAus && value.length < 4 ) || value.length < 5 ) {
        return false;
    } else return true;

},"Zip Code is not long enough");

$('form').validate({
    rules: {
        PostalCode: {
            required: true,GlobalZip: true
        }
    }
});​

猜你在找的jQuery相关文章