使用jquery验证器根据当前年份验证输入的月份

问题描述 投票:0回答:1

我有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
            });

[The Logic可能会首先检查当前年份(如果它像2020年),则它需要检查月份元素(正如我在2020年问这个问题)。如果年份不是2020,则不应验证月份元素。

html jquery-validate
1个回答
0
投票

首先,要注意getMonth()返回的值是0到11,而不是您期望的1到12。给该值加1。

然后您可以简化检查逻辑:

inputMonth + inputYear * 12 >= currentMonth + currentYear * 12
© www.soinside.com 2019 - 2024. All rights reserved.