WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:プルダウンメニューの項目について

0:[投稿] chimi [2004/11/18 09:23 ][環境:Windows2000 Windows2000 Server]

プルダウンメニューを3つ使って、年月日を選択できるように、プログラムを作成しています。
「月」のプルダウンメニューのonChangeイベントを使って、「日」のプルダウンメニューの項目を変更したいので、下記のプログラムを作成しましたが、このままだと「日」が31までない時、空白のところができてしまいます。空白のところを作らずに、プルダウンメニューの項目を変更することはできますか?
どなたかお願いします。

<html>
<head>
<title></title>
<SCRIPT LANGUAGE = "JavaScript">
<!--
function Month_Change()
{
    myMonthTbl= new Array(31,28,31,30,31,30,31,31,30,31,30,31);// 月テーブル定義
    year1 = document.Delivery.elements['cmb_year'].options[document.Delivery.elements['cmb_year'].selectedIndex].value;    // 下2桁の西暦取得
    year1 = (year1<2000) ? (1900+year1) : (year1);         // 4桁の西暦に変換
    if (((year1%4)==0 && (year1%100)!=0) || (year1%400)==0) // うるう年だったら...
          myMonthTbl[1] = 29;
    month1 = document.Delivery.elements['cmb_month'].options[document.Delivery.elements['cmb_month'].selectedIndex].value;
    for(i = 0;i < 31;i++)
        window.document.Delivery.elements['cmb_day'].options[i].text = "";
    for(i = 0;i < myMonthTbl[month1-1];i++)
        window.document.Delivery.elements['cmb_day'].options[i].text = i+1;
}
//--></SCRIPT>
</head>

<body topmargin = "30">
<form name = "Delivery" method = post action = "parts_delivery.asp">
<basefont face = "MS 明朝" size = "3">
<select name = "cmb_year">
<% for y = year(date) - 1 to year(date)
        if y = year(date) then    %>
            <option value = "<%=y%>" selected><%=y%></option>
<%        else    %>
            <option value = "<%=y%>"><%=y%></option>
<%        end if
    Next    %>
</select>/
<select name = "cmb_month" onChange = "Month_Change()">
<% for m = 1 to 12
        if m = month(date) then        %>
            <option value = "<%=m%>" selected><%=right("0" & m,2)%></option>
<%        else    %>
            <option value = "<%=m%>"><%=right("0" & m,2)%></option>
<%        end if
    Next    %>
</select>/
<select name = "cmb_day">
<%    for d = 1 to 30    %>
        <option value = "<%=d%>"><%=right("0" & d,2)%></option>
<%    Next    %>
    <option value = ""></option>
</select>
</form>
</body>
</html>


1:[回答] レトロ [2004/11/18 16:39 ]

日付のプルダウンを上書きせずに新しく書き直す。
for文ふたつと置き換えてください。

window.document.Delivery.elements['cmb_day'].length= 1;
for(i= 0;i < myMonthTbl[month1-1];i++){
 window.document.Delivery.elements['cmb_day'].options[i]= new Option(i+1,i+1);
}


2:[完了] chimi [2004/11/19 09:30 ]

レトロさん、ありがとうございました。
イメージ通りできました。


3:[質問] chimi [2004/11/19 09:56 ]

月のプルダウンメニューをチェンジしたとき、選択されていた日付が「1」にもどってしまいます。それは回避できますか?


4:[回答] レトロ [2004/11/22 09:42 ]

おっと。確かに選択も初期化しちゃいますね。
前回の記述の前後にこれを入れてください。

[前]
day = document.Delivery.elements['cmb_day'].selectedIndex;

[後]
if(day < myMonthTbl[month1-1]){
 document.Delivery.elements['cmb_day'].selectedIndex = day;
}


変更前の日付のindexを保持しておいて、
新しい日付のプルダウンに入れています。


5:[完了] chimi [2004/11/22 16:19 ]

レトロさん、ありがとうございました。
何度もすいません。おかげさまで、イメージどおりにできました。
ありがとうございます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World