根据所选月份更新天数

时间:2013-08-21 13:28:17

标签: javascript

我正在尝试编写一个简单的Javascript函数,以便在月份更改时更新选择框中的日期:

/* automatically update days based on month */
function updateMonth(iMonth, iDay) {
    var el = document.getElementById(iDay);
    el.options.length = 0;
    var d = new Date();
    for(i = 0; i < (32 - new Date(d.getFullYear(), iMonth, 32).getDate()); i++) {
        option = new Option(i, i);
        el.options[i] = option;
    }
}

<select name="start_month" id="start_month" onchange="updateMonth(this.value, 'start_day');">
<option>...</option>
</select>
<select name="start_day" id="start_day">
<option>...</option>
</select>
<select name="start_year" id="start_year">
<option>...</option>
</select>

首先,它似乎正在更新,但我得到了疯狂的结果。二月给了我30天,1月27日,他们都从0开始?其次,我不确定除了月份之外我是否还需要考虑这一年?

非常感谢任何理解这一点的帮助。

http://jsfiddle.net/NK7yd/

1 个答案:

答案 0 :(得分:1)

你的功能应该是

window.updateMonth= function(iMonth, iDay) {
    var el = document.getElementById(iDay);
    el.options.length = 0;

    for(var d = new Date(2013,iMonth-1,1); d.getMonth()==iMonth-1; d.setDate(d.getDate()+1)) {
        option = new Option(d.getDate(), d.getDate());
        el.options[d.getDate()-1] = option;
    }; 
}

我需要从年份中选择select值(而不是2013年的硬编码)。 http://jsfiddle.net/b5XMM/3/