2011-08-17 28 views
2

我正在验证Driver的出生日期,它应该从当前日期起至少为18。如何确认某人出生日期超过18岁?

var Dates = $get('<%=ui_txtDOB.ClientID %>'); 
var Split = Dates.value.split("/"); 

if (parseInt(Split[2]) > 1993) 
{ 
    alert("DOB year should be less than 1993"); 
    Dates.focus(); 
    return false; 
} 

我正在使用上面的JavaScript验证来检查一个人的18以上的DOB,但它是不正确的。我需要检查今天的日期,它应该在18以上。我怎样才能比较和检查当前的日期?

+0

这是不正确的,事实上,有趣的它每年将获得更加不正确的到来。 – Ingo 2011-08-17 11:05:44

回答

10

我认为一个更好的选择是计算用户的年龄,并在你的if语句中使用它。

看到这个关于如何做到这一点SO回答:

Calculate age in JavaScript

+0

谢谢..我尝试。 – Lakshmitha 2011-08-17 10:23:11

5

试试这个。

var enteredValue = $get('<%=ui_txtDOB.ClientID %>');; 
var enteredAge = getAge(enteredValue.value); 
if(enteredAge > 18) { 
    alert("DOB not valid"); 
    enteredValue.focus(); 
    return false; 
} 

使用此功能。

function getAge(DOB) { 
    var today = new Date(); 
    var birthDate = new Date(DOB); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    }  
    return age; 
} 

演示在这里:http://jsfiddle.net/codeandcloud/n33RJ/

2
<script> 


    function dobValidate(birth) { 


     var today = new Date(); 
     var nowyear = today.getFullYear(); 
     var nowmonth = today.getMonth(); 
     var nowday = today.getDate(); 
     var b = document.getElementById('<%=TextBox2.ClientID%>').value; 



     var birth = new Date(b); 

     var birthyear = birth.getFullYear(); 
     var birthmonth = birth.getMonth(); 
     var birthday = birth.getDate(); 

     var age = nowyear - birthyear; 
     var age_month = nowmonth - birthmonth; 
     var age_day = nowday - birthday; 


     if (age > 100) { 
      alert("Age cannot be more than 100 Years.Please enter correct age") 
      return false; 
     } 
     if (age_month < 0 || (age_month == 0 && age_day < 0)) { 
      age = parseInt(age) - 1; 


     } 
     if ((age == 18 && age_month <= 0 && age_day <= 0) || age < 18) { 
      alert("Age should be more than 18 years.Please enter a valid Date of Birth"); 
      return false; 
     } 
    } 



</script> 
0

看着这样的各种方法之后,我决定最简单的方法是进行编码的日期为8位整数。然后,您可以从DOB码减去今天的代码,并检查它是否大于或等于180000

function isOverEighteen(year, month, day) { 
    var now = parseInt(new Date().toISOString().slice(0, 10).replace(/-/g, '')); 
    var dob = year * 10000 + month * 100 + day * 1; // Coerces strings to integers 

    return now - dob > 180000; 
} 
相关问题