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

jQuery Validate conditional error messages for same field

我想根据以下条件为单个字段显示不同的错误消息。

 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"
  }
}

但是我的这个插件没有任何内置的验证方法。 关于如何实现它的任何帮助?

我的内置验证的意思是,如果您看到我的 aAmt else 循环:rules,它不适合 jQuery Validate 的内置验证,例如: List of built in validation methods

正如我在下面的评论中所指出的,您这里有一些严重的语法问题。

$("#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 用于定义消息。

已更新:

$("#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 控制台,因为它会告诉你很多语法错误。
  • 正确设置代码格式和意图,使其更易于阅读和故障排除。格式化后,extra/missingbrackets/braces很容易找到。