Javascript 2月份的出生验证日期

Javascript 2月份的出生验证日期,javascript,validation,dob,Javascript,Validation,Dob,我保存了三个下拉框,分别是日期、月份和年份。我想要一个验证函数,如果输入的日期在2月份超过29,它将返回false。如果是闰年,它应该接受2月份的29。我使用了以下JavaScript 即使我在日期字段中输入值27,28,它也会提示。你能帮我解决这个问题吗 下面是JavaScript代码 var myDayStr = document.UserReg.Date.value; var myMonthStr = document.UserReg.Month.value;

我保存了三个下拉框,分别是日期、月份和年份。我想要一个验证函数,如果输入的日期在2月份超过29,它将返回false。如果是闰年,它应该接受2月份的29。我使用了以下JavaScript

即使我在日期字段中输入值27,28,它也会提示。你能帮我解决这个问题吗

下面是JavaScript代码

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; }
          }

如果您输入的天数大于一个月允许的天数,setFullYear会自动重新对齐月份。例如:

date = new Date();
date.setFullYear('2012','2','35');
date.getMonth(); //returns 3
date.getDay(); // returns 3
所以你要做的就是像你一样设定日期,然后做一个直接的比较。保持简单

我手动创建,您可以尝试,它可以正常工作

功能isleap(年){
var yr=年;
如果((parseInt(yr)%4)==0){
如果(parseInt(yr)%100==0){
如果(parseInt(yr)%400!=0){
//警惕(“非跳跃”);
返回false;
}
如果(parseInt(yr)%400==0){
//警惕(“飞跃”);
返回true;
}
}
如果(parseInt(yr)%100!=0){
//警惕(“飞跃”);
返回true;
}
}
如果((parseInt(yr)%4)!=0){
//警惕(“非跳跃”);
返回false;
}
}
函数dayChange(){
变量年份=document.getElementById(“”);
var Month=document.getElementById(“”);
var Day=document.getElementById(“”);
if(Day.options[Day.selectedIndex].value==0){
Day.style.border='1px纯红';
}
否则{
Day.style.border='1px纯绿色';
}
}
函数yearChange(){
变量年份=document.getElementById(“”);
var Month=document.getElementById(“”);
var Day=document.getElementById(“”);
if(Year.options[Year.selectedIndex].value==0){
Year.style.border='1px纯红';
Day.style.border='1px纯红';
Month.style.border='1px纯红';
}
否则{
Year.style.border='1px纯绿色';
Day.style.border='1px纯红';
Month.style.border='1px纯红';
}
Day.options[0]。selected=true;
月份。选项[0]。所选为true;
如果(Day.options.length==30){
$('ddlDay')。追加(“30”);
$('ddlDay')。追加(“31”);
}
else if(Day.options.length==29){
$('ddlDay')。追加(“29”);
$('ddlDay')。追加(“30”);
$('ddlDay')。追加(“31”);
}
}
函数monthChange(){
var isLeap;
var Day=document.getElementById(“”);
var Month=document.getElementById(“”);
变量年份=document.getElementById(“”);
Month.style.border='1px实心红色';
Day.options[0]。selected=true;
Day.style.border='1px纯红';
if(Month.options[Month.selectedIndex].value==0){
Month.style.border='1px纯红';
Day.options[0]。selected=true;
Day.style.border='1px纯红';
}
else if(Month.options[Month.selectedIndex]。值==2){
Month.style.border='1px纯绿色';
如果(isleap(年份值)=真){
isLeap=‘真’;
选项['31'].remove();
选项['30'].remove();
Day.options[0]。selected=true;
Day.style.border='1px纯红';
Month.style.border='1px纯绿色';
}
否则{
选项['31'].remove();
选项['30'].remove();
选项['29'].remove();
Day.options[0]。selected=true;
Day.style.border='1px纯红';
Month.style.border='1px纯绿色';
}
Day.options[0]。selected=true;
Day.style.border='1px纯红';
Month.style.border='1px纯绿色';
}
否则{
如果(Day.options.length==29){
$(“#ddlDay').append(“29”);
$('ddlDay')。追加(“30”);
$('ddlDay')。追加(“31”);
}
else if(Day.options.length==30){
$('ddlDay')。追加(“30”);
$('ddlDay')。追加(“31”);
}
Month.style.border='1px纯绿色';
}
}

年
2005
2004
2003
2002
2001
2000
1999
1998
1997
1996
1995
1994
1993
1992
1991
1990
1989
1988
1987
1986
1985
1984
1983
1982
1981
1980
1979
1978
1977
1976
1975
1974
1973
1972
1971
1970
1969
1968
1967
1966
1965
1964
1963
1962
1961
1960
1959
1958
1957
1956
1955
1954
1953
1952
1951
1950
1949
1948
1947
1946
1945
1944
1943
1942
1941
1940
1939
1938
1937
1936
1935
1934
1933
1932
1931
1930
1929
1928
1927
1926
1925
1924
1923
1922
1921
1920
月
一月
二月
前进
四月
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';
        }


    }
<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('');


            }
    });
});