2011-08-17 2 views
2

운전자의 생년월일에 대한 유효성 확인을하고 있는데, 현재 날짜로부터 최소 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; 
} 

나는 18 위 사람의 생년월일을 확인하기 위해 자바 스크립트 검증 위에서이 사용하고 있지만 올바르지 않습니다. 오늘 날짜로 확인해야하며 18 세 이상이어야합니다. 어떻게 비교하고 현재 날짜로 확인할 수 있습니까?

+0

보다 크거나 같은 있는지 확인하고, 흥미롭게도이 와서 매년 더 적은 올바른 얻을 수 있습니다. – Ingo

답변

10

더 나은 대안은 사용자의 나이를 계산하고 if 문에서 사용하는 것입니다.

하면이 그래서 그냥 그 작업을 수행하는 방법에 대한 답변을 참조하십시오 :

Calculate age in JavaScript

+0

고마워. 나는 그것을 시험해 본다. – Lakshmitha

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; 
} 
관련 문제