jQuery验证相同字段的条件错误消息

时间:2016-07-28 15:16:33

标签: javascript jquery jquery-validate

我希望根据以下条件为单个字段添加不同的错误消息。

 jQuery(document).ready(function () {
    //...


    ..//

    $("#aID").validate({
            rules: {
                reason: "required",
                aic: "required"
                aAmt:{
                    required: function (element) {          
                    var err;
                    var new_balance = Math.round(100*beg_balance)/100 - Math.abs(Math.round(100*adjustAmount)/100);
            if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
                err = "123";                        
                return true;
            }
            else if (new_balance)
            {

                err = "321";
                return true;
            }
            return false;
                    }
                }
            }
            },
            messages: {
                reason:"Please select a reason code.",
                aic: "Please select a credit AIC.",
                pwdOverride: err
            },

    });

有如下选项

messages: {
  RoutingNumber: {
    required:"Message1",
    digits: "Message2",
    rangelength: "Message 3"
  }
}

但我的插件没有任何构建验证方法。 有关如何实现它的任何帮助吗?

我对内置验证的意思是,如果您看到aAmtrules的其他循环,则它不适合jQuery Validate的内置验证,例如:List of built in validation methods < / p>

1 个答案:

答案 0 :(得分:5)

您在此处有一些严重的语法问题,如下面的评论中所示。

$("#aID").validate({
    rules: {
        reason: "required",
        aic: "required" // <- MISSING a comma here
        aAmt: {
            required: function(element) {
                var err;
                var new_balance = Math.round(100 * beg_balance) / 100 - Math.abs(Math.round(100 * adjustAmount) / 100);
                if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
                    err = "123";
                    return true;
                } else if (new_balance) {
                    err = "321";
                    return true;
                }
                return false;
                }  // <- REMOVE extra brace
            }
        }
    },
    messages: {
        reason: "Please select a reason code.",
        aic: "Please select a credit AIC.",
        pwdOverride: err   // <- no such field defined in 'rules'
    }
});
  1. 您在aic规则之后错过了一个逗号。

  2. 在条件函数中有一个额外的括号。

  3. messages中,您指的是名为pwdOverride的字段,但rules中没有定义此类字段。如何在没有验证规则的字段上定义验证错误消息?

  4. 自定义消息的条件函数应包含在messages对象中,而不是rules对象中。 rules用于定义规则,messages用于定义消息。

  5. <强>更新

    $("#aID").validate({
        rules: {
            reason: "required",
            aic: "required",
            aAmt: "required"
        },
        messages: {
            reason: "Please select a reason code.",
            aic: "Please select a credit AIC.",
            aAmt: {
                required: function(element) {
                    var err = "this field is required"; // default message
                    var new_balance = Math.round(100 * beg_balance) / 100 - Math.abs(Math.round(100 * adjustAmount) / 100);
                    if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
                        err = "123";
                    } else if (new_balance) {
                        err = "321";
                    }
                    return err;  // <- display the custom message
                }
            }
        }
    });
    

    由于您尚未向我们展示表单的HTML标记,因此我只能提供一个通用的概念验证示例:jsfiddle.net/3of700am/

    备注

    • 请注意JavaScript控制台,因为它会告诉您许多语法错误。
    • 正确格式化和使用您的代码,以便更容易阅读和排除故障。格式化后,很容易找到额外/缺少括号/大括号。