• ベストアンサー

「年」「月」二つのドロップダウンメニューを連動して常に6桁を渡したい

次のような[年][月]が分かれたドロップダウンメニューがあります。 ここで選ばれた値をPHPに渡し、PHP内で yearとmonthを結合し、 6桁の検索条件として大小評価したいです。 [1999[▼]]年 [01[▼]]月 <select name="year"> <option value="" selected>無指定 <option value="1989">1990(平成元) <option value="1990">1990(平成02) :(略) <option value="2005">2005(平成17) <option value="2006">2006(平成18) </select> 年 <select name="month"> <option value="" selected>無指定 <option value="01">01 <option value="02">02 :(略) <option value="11">11 <option value="12">12 </select>月 これをjavascriptで次のように動作させたいのですが(IE6限定で十分です)。 (1) 年が「無指定」である間、月は常にdisable。年が選ばれている間、月は常にactive。 (2) 年が選ばれた際に、強制的に月を01(規定値)にセット。 (3) 年で無指定が選ばれたら、月も無指定&disableにセット。 ・・・という具合に動作させたいです。 要は、必ず6桁(yyyymm)の値か空白値をPHPに渡せればよいので、 年月の両者がきちんと選択されている場合のみ、検索ボタン(POST)の動作を 抑制できれば、alertなどでもかまわないのですが・・・ 大変あつかましいですが、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

とりあえずこんな感じすかね? (IEの方言はいってるので、ほかのブラウザでの動作まで考えれば調整必要) <form> <select name="year" onChange="changeYear(this)"> <option value="" selected>無指定 <option value="1989">1989(平成元) <option value="1990">1990(平成02) :(略) <option value="2005">2005(平成17) <option value="2006">2006(平成18) </select> 年 <select name="month" disabled="true"> <option value="" selected>無指定 <option value="01">01 <option value="02">02 :(略) <option value="11">11 <option value="12">12 </select>月 </form> <script language="JavaScript"> function changeYear(num){ if (num.value==""){ num.form.month.disabled=true num.form.month.selectedIndex=0 }else{ num.form.month.disabled=false num.form.month.selectedIndex=1 } } </script>

litton101
質問者

お礼

有用なスクリプト、ありがとうございました。 早速組み込ませていただきました。 年を選択後、セットされた01を無指定にすると 4桁でも渡せてしまうようでしたが、 わかりやすく組んでいただけたので 何とか改善できました。 本当に感謝にたえません。ありがとうございました。

その他の回答 (1)

回答No.2

#1さんのはエラーが出ますね(^^;; とりあえず、Formのnameは"InputForm"にしておきます。 <SCRIPT LANGUAGE="JavaScript"> <!-- function CheckYear() { with(document.InputForm){ if( year.options[year.selectedIndex].value == "" ){ month.selectedIndex = 0; month.disabled = true; } else { month.selectedIndex = 1; month.disabled = false; } } } //--> </SCRIPT> BODY部 <BODY onLoad="CheckYear();"> SELECT部(year) <SELECT name="year" onChange="CheckYear();"> onLoadで実行するのは、開いた時に年が 無指定なので、その場合も月をdisabledに するためです。 #monthを最初からdisabledにしておけば #onLoadは不要です。

litton101
質問者

お礼

大変有益なレスありがとうございました。 既に組み込んでしまった後で(^^; エラーにもなぜかならなかったですが、 ご指摘のように修正させていただきました。 本当にありがとうございました。

関連するQ&A