jquery - 自定义 jQuery 验证 .addMethod

标签 jquery validation

我有一个表单,可以根据最小/最大长度验证邮政编码。我需要让所有国家/地区的邮政编码至少为 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 将始终失败。

此外,您在 ("#PostalCode").length 之前缺少 $

此行还设置#Country的值。

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

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

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

尝试删除 minlength,并更改您的自定义函数。

试试这个:

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

验证该县是否为澳大利亚值的长度至少为 4。

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

$.validator.addMethod("AusZip", function(value, 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", function(value, 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", function(value, 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 - 自定义 jQuery 验证 .addMethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3882615/

相关文章:

asp.net-mvc - 如何在 MVC 中更改由 @Html 帮助程序生成的 'data-val-number' 消息验证

jquery - 当表单在中间找到一个封闭的 div 时,它不会验证字段

WickeTester - 非法状态异常 : No CDI context bound to application

javascript - 使用 jQuery 创建一个简单的 JavaScript 类

jQuery map 分解普通字符串并在不需要时添加 <br>

javascript - 将 .one 和 .on 事件从 JQuery 转换为 JavaScript

vba - 如果过滤器中没有值,则退出 sub

javascript - 文本框中仅允许基于连续 ID 的数字

javascript - Bootstrap 下拉菜单突然停止工作

python - 如何检查用户输入的电话号码是否包含国家代码?