首页 > 解决方案 > 特定年龄的最小和最大日期的 jQuery 验证

问题描述

我需要输入 DOB,但用户的最低年龄应为 18 岁,最高年龄应为 60 岁

由于添加了 jQuery 方法,但响应不佳,在任何 DOB 上显示最大年龄为 60 岁

jQuery方法的代码

 $.validator.addMethod("minDate", function (value, element) {
    var min = new Date(<?php echo date("U",strtotime("-60 year"));?>);
    var inputDate = new Date(value);
    if (inputDate < min)
        return true;
    return false;
}, "Maximum Age 60 Years");

$.validator.addMethod("maxDate", function (value, element) {
    var max = new Date(<?php echo date("U",strtotime("-18 year"));?>);
    var inputDate = new Date(value);
    if (inputDate > max)
        return true;
    return false;
}, "Minimum Age 18 Years");

表单验证规则

"user[DOB]": {
                required: true,
                minDate:true,
                maxDate:true
            },

标签: jqueryjquery-validate

解决方案


正如我在评论中提到的那样,您的验证是倒退的。如果无效,则返回 true,否则返回 false。

尝试:

$.validator.addMethod("minDate", function (value, element) {
    // new Date(-356780166)..
    var min = new Date(<?php echo date("U",strtotime("-60 year"));?>);
    var inputDate = new Date(value);
    if (inputDate < min)
        return false;
    return true;
}, "Maximum Age 60 Years");

$.validator.addMethod("maxDate", function (value, element) {
    var max = new Date(<?php echo date("U",strtotime("-18 year"));?>);
    var inputDate = new Date(value);
    if (inputDate > max)
        return false;
    return true;
}, "Minimum Age 18 Years");

如果这不起作用,请查看您的 inputDate 返回的内容,例如console.log(inputDate);


推荐阅读