アプリ版:「スタンプのみでお礼する」機能のリリースについて

次のような[年][月]が分かれたドロップダウンメニューがあります。
ここで選ばれた値を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などでもかまわないのですが・・・

大変あつかましいですが、よろしくお願い致します。

A 回答 (2件)

とりあえずこんな感じすかね?


(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>
    • good
    • 0
この回答へのお礼

有用なスクリプト、ありがとうございました。
早速組み込ませていただきました。

年を選択後、セットされた01を無指定にすると
4桁でも渡せてしまうようでしたが、
わかりやすく組んでいただけたので
何とか改善できました。

本当に感謝にたえません。ありがとうございました。

お礼日時:2005/08/25 11:02

#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は不要です。
    • good
    • 0
この回答へのお礼

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

本当にありがとうございました。

お礼日時:2005/08/25 11:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!