我有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,则不应验证月份元素。
首先,要注意getMonth()
返回的值是0到11,而不是您期望的1到12。给该值加1。
然后您可以简化检查逻辑:
inputMonth + inputYear * 12 >= currentMonth + currentYear * 12