2014-04-01 74 views
0

我使用此脚本来验证当他们输入生日时是否超过16岁。问题是,它只能以当年的准确性来验证,所以如果某人今年满16岁,但仍然15岁,它仍然会通过。年龄检查由出生日期到确切日期,为jquery.validate

谁能告诉我如何验证当天,Date()javascript函数没有足够的在线信息。

我的代码:

$.validator.addMethod("check_date_of_birth", function(value, element) { 

    var dateOfBirth = $("#dob").val(); 
    var arr_dateText = dateOfBirth.split("/"); 
    day = arr_dateText[0];   
    month = arr_dateText[1]; 
    year = arr_dateText[2]; 

    var mydate = new Date(); 
    mydate.setFullYear(year, month-1, day); 

    var currdate = new Date(); 

    var totalage = (currdate.getFullYear()) - (mydate.getFullYear()); 

    if (totalage < 16){   
     $.validator.messages.check_date_of_birth = "Sorry, only persons over the age of 16 can be covered"; 
     return false; 
    } 
    return true;   
}); 

回答

7

您可以检查是否输入的日期>当前日期 - 15年如

$.validator.addMethod("check_date_of_birth", function (value, element) { 
    if (this.optional(element)) { 
     return true; 
    } 

    var dateOfBirth = value; 
    var arr_dateText = dateOfBirth.split("/"); 
    day = arr_dateText[0]; 
    month = arr_dateText[1]; 
    year = arr_dateText[2]; 

    var mydate = new Date(); 
    mydate.setFullYear(year, month - 1, day); 

    var maxDate = new Date(); 
    maxDate.setYear(maxDate.getYear() - 16); 

    if (maxDate < mydate) { 
     return false; 
    } 
    return true; 
}, 'Sorry, only persons over the age of 16 can be covered'); 

演示:Fiddle

+1

这工作的一种享受,感谢堆帮助阿伦,非常感谢。 – Desmond

-4

变化

maxDate.setYear(maxDate.getYear() - 16); 

maxDate.setYear(maxDate.getFullYear() - 16);