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

JNP*_*NPW 0 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
            },

    });
Run Code Online (Sandbox Code Playgroud)

有一个如下选项

messages: {
  RoutingNumber: {
    required:"Message1",
    digits: "Message2",
    rangelength: "Message 3"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

我对内置验证的意思是,如果你看到我的else循环aAmt:rules它不适合jQuery Validate的内置验证,例如: 内置验证方法列表

Spa*_*rky 6

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

$("#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'
    }
});
Run Code Online (Sandbox Code Playgroud)
  1. 您在aic规则之后缺少逗号.

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

  3. 在messages你指的是一个名为场pwdOverride,但内定义没有这样的领域rules.如何在没有验证规则的字段上定义验证错误消息?

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

更新:

$("#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
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

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

注意:

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