我有两个select元素。一个用于月份,一个用于年份。(假设正在验证信用卡到期(。
因此,如果输入的月份不小于当前月份,我想验证该月份。
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
});
如果是2020年,逻辑可能会首先检查当前年份,而不是需要检查月份元素(正如我在2020年问的这个问题(。如果年份不是2020年,则不应验证月份元素。
首先,要注意getMonth()
返回的值从0到11,而不是您所期望的1到12。将该值加1。
然后你可以简化逻辑来检查:
inputMonth + inputYear * 12 >= currentMonth + currentYear * 12