【问题标题】:Jquery Validation: AddMethod message override standard messageJquery Validation:AddMethod 消息覆盖标准消息
【发布时间】:2019-04-11 18:03:14
【问题描述】:

我有 2 个需要数值(介于 0-3 之间)的输入表单:

<input type="text" id="number1" name="number1" placeholder="0" maxlength="1" class="optionsNumber" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 51">
<input type="text" id="number2" name="number2" placeholder="0" maxlength="1" class="optionsNumber" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 51">

然后我使用 Jquery Validate addMethod 来检查 number1 和 number2 的组合值是否小于 4:

<script>


$(document).ready(function() {

    $.validator.addMethod("check_months", function (value, element, param) {
        var number1 = $("#number1").val() || 0;
        var number2 = $("#number2").val() || 0;
        return this.optional(element) || parseInt(number1)+parseInt(number2) < 4;
    }, "The total number allocated to number1 and number2 cannot be more than 3.");

    $("#Form").validate({
        onkeyup: function(element) {
            this.element(element);
        },
        onfocusout: function(element) {
            this.element(element);
        },
        rules: {
            number1: {
                check_months: true,
            },
            number2: {
                check_months: true,
            },
        },
        messages: {
            number1: "Please enter the number you require number1 (max 3)",
            number2: "Please enter the number you require number2 (max 3)"
        },
        errorPlacement: function(error, element) {
            var placement = $(element).data('error');
            if (placement) {
                $(placement).append(error)
            } else {
                error.insertAfter(element);
            }
        }
    });
});
</script>

如果 number1 的输入字段包含 2 并且 number2 的输入字段包含 2 则组合值为 4,因此我想显示 addMethod 消息(分配给 number1 和 number2 的总数不能超过 3。)但我看到的错误是验证消息(请输入您需要的数字 number1/2(最多 3 个))。

如何使用 addMethod 消息覆盖验证消息?

更新:通过注释掉标准消息,会显示 addMethod 消息,但如果用户想要两者:

messages: {
            //number1: "Please enter the number you require number1 (max 3)",
            //number2: "Please enter the number you require number2 (max 3)"
        },

【问题讨论】:

  • 在您的 1 号和 2 号的 addMethod 中,您正在获取相同的 2 号值。
  • 感谢@SangitaKendre,这是一个错字,我试图清理代码以使其更易于阅读 - 现在已修复,但问题仍然存在。

标签: jquery validation


【解决方案1】:

在使用验证功能时,您为每个字段指定了全局错误消息,它会覆盖默认消息。下面的代码对我有用。请检查。

$.validator.addMethod("check_months", function (value, element, param) {
            var number1 = $("#number1").val() || 0;
            var number2 = $("#number2").val() || 0;
            return this.optional(element) || parseInt(number1)+parseInt(number2) < 4;
        }, "The total number allocated to number1 and number2 cannot be more than 3.");

        $("#Form").validate({
            onkeyup: function(element) {
                this.element(element);
            },
            onfocusout: function(element) {
                this.element(element);
            },
            rules: {
                number1: {
                    required: true,
                    check_months: true,
                },
                number2: {
                    required: true,
                    check_months: true,
                },
            },
            messages: {
                number1: { required: "Please enter the number you require number1 (max 3)", },
                number2:{ required:  "Please enter the number you require number2 (max 3)"}
            },
            errorPlacement: function(error, element) {
                var placement = $(element).data('error');
                if (placement) {
                    $(placement).append(error)
                } else {
                    error.insertAfter(element);
                }
            }
        });

【讨论】:

  • 我将 number1 和 number2 放到了消息区域中,它起作用了。感谢您的帮助
猜你喜欢
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2012-08-17
  • 1970-01-01
  • 2018-01-31
  • 2016-09-13
  • 2020-04-16
相关资源
最近更新 更多