2012-10-14 8 views
1

나는 DATE, MONTH, YEAR에 대해 3 개의 드롭 다운 상자를 유지했습니다. 입력 한 날짜가 FEB 월에 29 이상인 경우 false를 반환하는 유효성 검사 함수가 필요합니다. 윤년이라면 FEB는 29를 받아 들여야합니다. 다음 자바 스크립트를 사용했습니다.생년월일에 대한 유효성 확인

날짜 필드에 값 27,28을 입력하더라도 메시지가 표시됩니다. 이걸로 나를 도울 수 있을까?

다음

자바 스크립트 코드가 ..

var myDayStr = document.UserReg.Date.value; 
     var myMonthStr = document.UserReg.Month.value; 
     var myYearStr = document.UserReg.Year.value; 
     var myMonth = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); 
     var validMonthLength = ['',31,28,31,30,31,30,31,31,30,31,30,31]; 
     var myDateStr = myDayStr + ' ' + myMonthStr + ' ' + myYearStr; 

     var myDate = new Date(); 
     myDate.setFullYear(myYearStr, myMonthStr, myDayStr); 

     if (myDate.getMonth() != myMonthStr) { 
      alert(' sorry, but "' + myDateStr + '" is NOT a valid date of birth.'); 
      return false; 
     } 
     var testDate = new Date(myYearStr,(myMonthStr-1),myDateStr); 
     if ((myMonthStr == '02') && (myDateStr != testDate.getDate())) { 
      alert("There is no dates above 28 in February of "+myYearStr); 
      return false; 
      } 
      if (myMonthStr != 2) { 
      if (myDateStr > validMonthLength[myMonthStr]) 
      { 
       alert("Invalid date for month chosen"); 
       return false; } 
      } 
+0

작업 시도 할 수동 생성 ((myMonthStr의 == '02 경우 ') && (myDateStr! = testDate.getDate())) { 경고 ("2 월에"+ myYearStr + "또는"+ myDateStr + "이 (가)"+ testDate.getDate())와 같지 않은 28 일 이후의 날짜가 없습니다. –

답변

1

하여 setFullYear 자동으로 다시 정렬 한 달에 수 일 수보다 큰 일 수에 넣으면 달. 예를 들어 :

date = new Date(); 
date.setFullYear('2012','2','35'); 
date.getMonth(); //returns 3 
date.getDay(); // returns 3 

그래서 당신은 당신이 단지 바로 비교를 다음처럼 날짜를 설정하는 일. 단순하게 유지하십시오.

0

난 U는이 비교 된 두 값을 표시시킬 수있는 디버깅

function isleap(year) { 
      var yr = year; 
      if ((parseInt(yr) % 4) == 0) { 
       if (parseInt(yr) % 100 == 0) { 
        if (parseInt(yr) % 400 != 0) { 
         //alert("Not Leap"); 
         return false; 
        } 
        if (parseInt(yr) % 400 == 0) { 
         //alert("Leap"); 
         return true; 
        } 
       } 
       if (parseInt(yr) % 100 != 0) { 
        //alert("Leap"); 
        return true; 
       } 
      } 
      if ((parseInt(yr) % 4) != 0) { 
       //alert("Not Leap"); 
       return false; 
      } 
     } 

    function dayChange() { 
     var Year = document.getElementById('<%=ddlYear.ClientID %>'); 
     var Month = document.getElementById('<%=ddlMonth.ClientID %>'); 
     var Day = document.getElementById('<%=ddlDay.ClientID %>'); 
      if (Day.options[Day.selectedIndex].value == 0) { 


      Day.style.border = '1px solid red'; 
     } 
     else { 

      Day.style.border = '1px solid green'; 

     } 
    } 


    function yearChange() { 
     var Year = document.getElementById('<%=ddlYear.ClientID %>'); 
     var Month = document.getElementById('<%=ddlMonth.ClientID %>'); 
     var Day = document.getElementById('<%=ddlDay.ClientID %>'); 

     if (Year.options[Year.selectedIndex].value == 0) { 


      Year.style.border = '1px solid red'; 
      Day.style.border = '1px solid red'; 
      Month.style.border = '1px solid red'; 

     } 
     else { 

      Year.style.border = '1px solid green'; 
      Day.style.border = '1px solid red'; 
      Month.style.border = '1px solid red'; 

     } 


     Day.options[0].selected = true; 
     Month.options[0].selected = true; 

     if (Day.options.length == 30) { 
      $('#ddlDay').append("<option >30</option>"); 
      $('#ddlDay').append("<option >31</option>"); 
     } 
     else if (Day.options.length == 29) { 
      $('#ddlDay').append("<option >29</option>"); 
      $('#ddlDay').append("<option >30</option>"); 
      $('#ddlDay').append("<option >31</option>"); 
     } 

    } 

    function monthChange() { 

     var isLeap; 
     var Day = document.getElementById('<%=ddlDay.ClientID %>'); 

     var Month = document.getElementById('<%=ddlMonth.ClientID %>'); 

     var Year = document.getElementById('<%=ddlYear.ClientID %>'); 

     Month.style.border = '1px solid red'; 

     Day.options[0].selected = true; 
     Day.style.border = '1px solid red'; 


     if (Month.options[Month.selectedIndex].value == 0) { 


      Month.style.border = '1px solid red'; 

      Day.options[0].selected = true; 
      Day.style.border = '1px solid red'; 

     } 


     else if (Month.options[Month.selectedIndex].value == 2) { 
      Month.style.border = '1px solid green'; 

      if (isleap(Year.value) == true) { 
       isLeap = 'true'; 
       Day.options['31'].remove(); 
       Day.options['30'].remove(); 

       Day.options[0].selected = true; 
       Day.style.border = '1px solid red'; 
       Month.style.border = '1px solid green'; 




      } 
      else { 

       Day.options['31'].remove(); 
       Day.options['30'].remove(); 

       Day.options['29'].remove(); 
       Day.options[0].selected = true; 
       Day.style.border = '1px solid red'; 
       Month.style.border = '1px solid green'; 



      } 
      Day.options[0].selected = true; 
      Day.style.border = '1px solid red'; 
      Month.style.border = '1px solid green'; 

     } 
     else { 



      if (Day.options.length == 29) { 
       $('#ddlDay').append("<option >29</option>"); 
       $('#ddlDay').append("<option >30</option>"); 
       $('#ddlDay').append("<option >31</option>"); 
      } 
      else if (Day.options.length == 30) { 

       $('#ddlDay').append("<option >30</option>"); 
       $('#ddlDay').append("<option >31</option>"); 
      } 
      Month.style.border = '1px solid green'; 
     } 


    } 
+0

이것은 아마도 (상당히 오래된) 질문에 대한 해결책을 제공 할 수 있지만 솔루션 뒤에있는 논리를 설명하는 설명 텍스트를 추가하는 것이 좋습니다. – MasterAM

-2
<form id="dob_form"> 
    <select name="Year" id="year"> 
     <option> Year</option> 
     <option></option> 
     <option value="2005">2005</option> 
     <option value="2004">2004</option> 
     <option value="2003">2003</option> 
     <option value="2002">2002</option> 
     <option value="2001">2001</option> 
     <option value="2000">2000</option> 
     <option value="1999">1999</option> 
     <option value="1998">1998</option> 
     <option value="1997">1997</option> 
     <option value="1996">1996</option> 
     <option value="1995">1995</option> 
     <option value="1994">1994</option> 
     <option value="1993">1993</option> 
     <option value="1992">1992</option> 
     <option value="1991">1991</option> 
     <option value="1990">1990</option> 
     <option value="1989">1989</option> 
     <option value="1988">1988</option> 
     <option value="1987">1987</option> 
     <option value="1986">1986</option> 
     <option value="1985">1985</option> 
     <option value="1984">1984</option> 
     <option value="1983">1983</option> 
     <option value="1982">1982</option> 
     <option value="1981">1981</option> 
     <option value="1980">1980</option> 
     <option value="1979">1979</option> 
     <option value="1978">1978</option> 
     <option value="1977">1977</option> 
     <option value="1976">1976</option> 
     <option value="1975">1975</option> 
     <option value="1974">1974</option> 
     <option value="1973">1973</option> 
     <option value="1972">1972</option> 
     <option value="1971">1971</option> 
     <option value="1970">1970</option> 
     <option value="1969">1969</option> 
     <option value="1968">1968</option> 
     <option value="1967">1967</option> 
     <option value="1966">1966</option> 
     <option value="1965">1965</option> 
     <option value="1964">1964</option> 
     <option value="1963">1963</option> 
     <option value="1962">1962</option> 
     <option value="1961">1961</option> 
     <option value="1960">1960</option> 
     <option value="1959">1959</option> 
     <option value="1958">1958</option> 
     <option value="1957">1957</option> 
     <option value="1956">1956</option> 
     <option value="1955">1955</option> 
     <option value="1954">1954</option> 
     <option value="1953">1953</option> 
     <option value="1952">1952</option> 
     <option value="1951">1951</option> 
     <option value="1950">1950</option> 
     <option value="1949">1949</option> 
     <option value="1948">1948</option> 
     <option value="1947">1947</option> 
     <option value="1946">1946</option> 
     <option value="1945">1945</option> 
     <option value="1944">1944</option> 
     <option value="1943">1943</option> 
     <option value="1942">1942</option> 
     <option value="1941">1941</option> 
     <option value="1940">1940</option> 
     <option value="1939">1939</option> 
     <option value="1938">1938</option> 
     <option value="1937">1937</option> 
     <option value="1936">1936</option> 
     <option value="1935">1935</option> 
     <option value="1934">1934</option> 
     <option value="1933">1933</option> 
     <option value="1932">1932</option> 
     <option value="1931">1931</option> 
     <option value="1930">1930</option> 
     <option value="1929">1929</option> 
     <option value="1928">1928</option> 
     <option value="1927">1927</option> 
     <option value="1926">1926</option> 
     <option value="1925">1925</option> 
     <option value="1924">1924</option> 
     <option value="1923">1923</option> 
     <option value="1922">1922</option> 
     <option value="1921">1921</option> 
     <option value="1920">1920</option> 
    </select> 
    <select name="Month" id="month" disabled="disabled"> 
     <option></option> 
     <option> Month</option> 
     <option></option> 
     <option value="January">January</option> 
     <option value="Febuary">Febuary</option> 
     <option value="March">March</option> 
     <option value="April">April</option> 
     <option value="May">May</option> 
     <option value="June">June</option> 
     <option value="July">July</option> 
     <option value="August">August</option> 
     <option value="September">September</option> 
     <option value="October">October</option> 
     <option value="November">November</option> 
     <option value="December">December</option> 
    </select> 
    <select name="Day" id="day" disabled="disabled"> 
     <option></option> 
     <option> Day</option> 
     <option></option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="8">8</option> 
     <option value="9">9</option> 
     <option value="10">10</option> 
     <option value="11">11</option> 
     <option value="12">12</option> 
     <option value="13">13</option> 
     <option value="14">14</option> 
     <option value="15">15</option> 
     <option value="16">16</option> 
     <option value="17">17</option> 
     <option value="18">18</option> 
     <option value="19">19</option> 
     <option value="20">20</option> 
     <option value="21">21</option> 
     <option value="22">22</option> 
     <option value="23">23</option> 
     <option value="24">24</option> 
     <option value="25">25</option> 
     <option value="26">26</option> 
     <option value="27">27</option> 
     <option value="28">28</option> 
     <option id="29" value="29">29</option> 
     <option id="30" value="30">30</option> 
     <option id="31" value="31">31</option> 
    </select> 
</form> 

$(document).ready(function(){ 


    $("#year").change(function(){ 
     var year = $("#year").val(); 

      if(year!="" && year!="Year"){ 
      $("#month").removeAttr('disabled'); 
      $("#month").val('Month'); 
      } 
      else{ 
      $("#month").attr('disabled', true); 
      $("#month").val(''); 
      $("#day").attr('disabled', true); 
      $("#day").val(''); 
      } 
    }); 


      $("#month").change(function(){ 
       var month = $("#month").val(); 
       var year = $("#year").val(); 

      if(month!="" && month!="Month"){ 
       $("#day").removeAttr('disabled'); 
       $("#day").val('Day'); 

        if(month=="Febuary"){ 
        var lastday = $("#day option").last().val(); 
          $("#31").remove(); 
          $("#30").remove(); 
           if(year % 4 != 0){ 
            $("#29").remove(); 
           }else if(lastday == 28){ 

           $("#day").append("<option id='29' value='29'>29</option>"); 
           } 
        } 
        else if(month == "April" || 
        month == "June" || 
        month == "November" || 
        month == "September") 
        { 

          var lastday = $("#day option").last().val(); 
           if(lastday == 31){ 
           $("#31").remove(); 

           } else if(lastday == 29){ 
           $("#day").append("<option id='30' value='30'>30</option>"); 

           } 
           else if(lastday == 28){ 
           $("#day").append("<option id='29' value='29'>29</option><option id='30' value='30'>30</option>"); 

           } 
        } 
        else{ 
        var lastday = $("#day option").last().val(); 
           if(lastday == 30){ 
           $("#day").append("<option id='31' value='31'>31</option>"); 

           } else if(lastday == 29){ 
           $("#day").append("<option id='30' value='30'>30</option><option id='31' value='31'>31</option>"); 

           } 
           else if(lastday == 28){ 
           $("#day").append("<option id='29' value='29'>29</option><option id='30' value='30'>30</option><option id='31' value='31'>31</option>"); 

           } 


        } 


      } 
      else{ 
      $("#day").attr('disabled', true); 
      $("#day").val(''); 


      } 
    }); 
});