Проверка введенного месяца на основе текущего года с использованием валидатора jquery - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 2 выбранных элемента. Один на месяц и один на год. (Предположим, что срок действия кредитной карты подтвержден).

Поэтому я хочу проверить месяц, если введенный месяц не меньше текущего месяца.

HTML КОД:

<select class="custom-control form-control" name="auto_aim_expDateMonth" id="expDateMonth_7" style="width:50px">
        <option value="1">01</option>
        <option value="2" >02</option>
        <option value="3" >03</option>
        <option value="4" >04</option>
        <option value="5" >05</option>
        <option value="6" >06</option>
        <option value="7" >07</option>
        <option value="8" >08</option>
        <option value="9" >09</option>
        <option value="10" >10</option>
        <option value="11" >11</option>
        <option value="12" >12</option>
    </select>
        <select class="custom-control form-control" name="auto_aim_expDateYear" id="expDateYear_7" style="width:80px">
            <option value="2020" >2020</option>
            <option value="2021" >2021</option>
            <option value="2022" >2022</option>
            <option value="2023" >2023</option>
            <option value="2024" >2024</option>
            <option value="2025" >2025</option>
            <option value="2026" >2026</option>
            <option value="2027" >2027</option>
            <option value="2028" >2028</option>
            <option value="2029" >2029</option>
        </select>

Jquery Код:

            var now= new Date();
            var month=now.getMonth();
            var year1=now.getFullYear();

                $("#shippingadd").validate({
                rules: {
                    auto_aim_expDateMonth:  {
                        monthCheck: month,
                    },          
                    auto_aim_expDateYear:  {
                        minStrict: year1,
                    },          
                },
                messages: {
                    auto_aim_expDateMonth: {
                        monthCheck: "",
                    },
                    auto_aim_expDateYear: {
                        minStrict: "",
                    },
                },
            });
            $.validator.addMethod('minStrict', function (value, el, param) {
                return value >= param;
            });
            $.validator.addMethod('monthCheck', function (value, el, param) {
                //code logic here
            });

Logi c может сначала проверить текущий год, если он подобен 2020 году, чем нужно проверить элемент месяца (как я задал этот вопрос в 2020). Если год не 2020, элемент месяца не должен проверяться.

1 Ответ

0 голосов
/ 24 апреля 2020

Во-первых, остерегайтесь того, что getMonth() возвращает значение от 0 до 11, а не от 1 до 12, как вы ожидаете. Добавьте к этому значению 1.

Затем вы можете упростить логику c, чтобы проверить, что:

inputMonth + inputYear * 12 >= currentMonth + currentYear * 12
...