0

月が変更されるたびに選択ボックス内の日を更新する単純な 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>

まず第一に、更新しているように見えますが、私はクレイジーな結果を得ています. 2 月は 30 日、1 月 27 日はすべて 0 から始まりますか? 第二に、月に加えて年を考慮する必要があるかどうかわかりませんか?

これを理解する助けがあれば大歓迎です。

http://jsfiddle.net/NK7yd/

4

1 に答える 1

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

(ハードコードされた 2013 の代わりに) 年を指定して select から値を読み取る必要があります。 http://jsfiddle.net/b5XMM/3/

于 2013-08-21T14:39:22.510 に答える