Hi,
I am trying to populate year,day and month dropdown.
It working fine without <option value="">Select</option> i.e empty option.

But getting wrong no of days for month selection after adding select option

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>untitled</title>
<script type="text/javascript">

var numDays = {
                '1': 31, '2': 28, '3': 31, '4': 30, '5': 31, '6': 30, 
                '7': 31, '8': 31, '9': 30, '10': 31, '11': 30, '12': 31
              }; 

function setDays(oMonthSel, oDaysSel, oYearSel)
{ 
    var nDays, oDaysSelLgth, opt, i = 1; 
    nDays = numDays[oMonthSel[oMonthSel.selectedIndex].value]; 
    if (nDays == 28 && oYearSel[oYearSel.selectedIndex].value % 4 == 0) 
        ++nDays; 
    oDaysSelLgth = oDaysSel.length; 
    if (nDays != oDaysSelLgth)
    { 
        if (nDays < oDaysSelLgth) 
            oDaysSel.length = nDays; 
        else for (i; i < nDays - oDaysSelLgth + 1; i++)
        { 
            opt = new Option(oDaysSelLgth + i, oDaysSelLgth + i); 
                    oDaysSel.options[oDaysSel.length] = opt;
        } 
    }
    var oForm = oMonthSel.form;
    var month = oMonthSel.options[oMonthSel.selectedIndex].value;
    var day = oDaysSel.options[oDaysSel.selectedIndex].value;
    var year = oYearSel.options[oYearSel.selectedIndex].value;  
    oForm.hidden.value = month + '/' + day + '/' + year;
} 

</script>
</head>
<body>
<form>
<select name="month" id="month" onchange="setDays(this,day,year)">
<option value="">Select</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="day" id="day" onchange="setDays(month,this,year)">
<option value="">Select</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 value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="year" id="year" onchange="setDays(month,day,this)">
<option value="">Select</option>
<option value="1944">1944</option>
<option value="1945">1945</option>
<option value="1946">1946</option>
<option value="1947">1947</option>
<option value="1948">1948</option>
<option value="1949">1949</option>
<option value="1950">1950</option>
<option value="1951">1951</option>
<option value="1952">1952</option>
<option value="1953">1953</option>
<option value="1954">1954</option>
<option value="1955">1955</option>
<option value="1956">1956</option>
<option value="1957">1957</option>
<option value="1958">1958</option>
<option value="1959">1959</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
<option value="1963">1963</option>
<option value="1964">1964</option>
<option value="1965">1965</option>
<option value="1966">1966</option>
<option value="1967">1967</option>
<option value="1968">1968</option>
<option value="1969">1969</option>
<option value="1970">1970</option>
<option value="1971">1971</option>
<option value="1972">1972</option>
<option value="1973">1973</option>
<option value="1974">1974</option>
<option value="1975">1975</option>
<option value="1976">1976</option>
<option value="1977">1977</option>
<option value="1978">1978</option>
<option value="1979">1979</option>
<option value="1980">1980</option>
<option value="1981">1981</option>
<option value="1982">1982</option>
<option value="1983">1983</option>
<option value="1984">1984</option>
<option value="1985">1985</option>
<option value="1986">1986</option>
<option value="1987">1987</option>
<option value="1988">1988</option>
<option value="1989">1989</option>
<option value="1990">1990</option>
</select>
<input type="text" name="hidden" value="" />
</form>
</body>
</html>
Member Avatar for LastMitch

But getting wrong no of days for month selection after adding select option

@jacob21

I think this code here doesn't make sense:

var nDays, oDaysSelLgth, opt, i = 1; 
nDays = numDays[oMonthSel[oMonthSel.selectedIndex].value]; 
if (nDays == 28 && oYearSel[oYearSel.selectedIndex].value % 4 == 0) 
++nDays; 

The ++nDays? shouldn't be a i?

Here where do you see ++nDays? I only see i++ because this code here is to add up the days:

 if (nDays != oDaysSelLgth)
    { 
        if (nDays < oDaysSelLgth) 
            oDaysSel.length = nDays; 
        else for (i; i < nDays - oDaysSelLgth + 1; i++)
        { 
            opt = new Option(oDaysSelLgth + i, oDaysSelLgth + i); 
                    oDaysSel.options[oDaysSel.length] = opt;
        } 
    }
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.