1

我为 DATE、MONTH 和 YEAR 保留了三个下拉框。我想要一个验证函数,如果输入的日期在 FEB 月份超过 29,它将返回 false。如果是闰年,则应接受 29 表示 FEB。我使用了以下 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; }
          }
4

3 回答 3

1

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

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

因此,您所做的就是像您一样设置日期,然后进行直接比较。把事情简单化。

于 2012-10-14T18:13:07.993 回答
0

我手动创建你可以试试,它的工作

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


    }
于 2014-02-06T17:12:23.527 回答
-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('');


            }
    });
});
于 2014-02-10T21:31:26.890 回答