Проверка Jquery: сообщение AddMethod переопределяет стандартное сообщение - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть 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.) но ошибки, которые я вижу, являются подтверждением сообщения (Пожалуйста, введите номер, который вам требуется номер 1/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 Ответ

0 голосов
/ 11 апреля 2019

При использовании функции проверки вы указали глобальное сообщение об ошибке для каждого поля, оно переопределяет сообщения по умолчанию. Ниже код работал для меня. Пожалуйста, проверьте.

$.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);
                }
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...