プロが教えるわが家の防犯対策術!

JavaScriptを使ってプルダウン操作をしております。
一つ目のプルダウンで選択したあと2つ目のプルダウンのoptionの部分だけ表示・非表示をしたいのです。そんなことはできるのでしょうか?

下のソースで説明しますが、一つ目のリストで「あいうえお」を選択した時点で2つ目の選択リストの「ひらがな1」と「ひらがな2」だけを選択できるようにしたいのです。「カタカナ1」「カタカナ2」は非表示もしくは選択不可にできればいいのですが。

一つ目のプルダウンリスト
<select name="formtype" onchange="form_indicate();">
<option value="AAA">あいうえお
<option value="BBB">アイウエオ
</select>

二つ目のプルダウンリスト
<select name="formtype2">
<option value="aaa">ひらがな1
<option value="bbb">ひらがな2
<option value="ccc">カタカナ1
<option value="ddd">カタカナ2
</select>

A 回答 (2件)

こんにちは



こんな感じでどうですか?

<script language="JavaScript"><!--
menuItem = [ [ ] , ["ひらがな1","ひらがな2"] , ["カタカナ1","カタカナ2"] ];
menuvalue = [ [ ] , ["aaa","bbb"] , ["ccc","ddd"] ];

function setMenu(n) {
m = document.form.formtype.value;
len = document.form.formtype2.options.length;
for (i=len-1; i>=0; i--) {
document.form.formtype2.options[i] = null;
}

document.form.formtype2.style.visibility = "visible";
document.form.submit.style.visibility = "visible";
if(m == ""){
document.form.formtype2.style.visibility = "hidden";
document.form.submit.style.visibility = "hidden";
}


for (i=0; i<menuItem[n].length; i++) {
document.form.formtype2.options[i] = new Option(menuItem[n][i],menuvalue[n][i]);
}
}
// --></script>
</head>
<body>
<form name="form" action="./test.cgi">
<select name="formtype" onChange="setMenu(this.selectedIndex)">
<option value="">選択すれば次のセレクトが出ます</option>
<option value="AAA">あいうえお</option>
<option value="BBB">アイウエオ</option>
</select>
<select name="formtype2" style="visibility:hidden">
<option value=""></option>
</select>
<input type="submit" value="送信" name="submit" style="visibility:hidden">
</form>
    • good
    • 3

このようなときは、2つ目を


<select name="formtype2a">
<option value="aaa">ひらがな1
<option value="bbb">ひらがな2
</select>
<select name="formtype2b">
<option value="ccc">カタカナ1
<option value="ddd">カタカナ2
</select>
のように2つに分けて、それぞれをstyleのdisplayでON/OFF
にします。

この回答への補足

早速の返信ありがとうございます。
optionのdisplayはできないのでしょうか?
確かに、おっしゃるその方法は試してOKではあったのですが、問題が発生しました。
実はCGIでプログラムを組んでいるのですが、本来のソースは以下のようになっています。

<select name="formtype" onchange="form_indicate();">
<option value="AAA" selected>あいうえお
<option value="BBB">アイウエオ
</select>

二つ目のプルダウンリスト
<select name="formtype2a">
<option value="aaa">ひらがな1
<option value="bbb">ひらがな2
</select>
三つ目のプルダウンリスト
<select name="formtype2b">
<option value="ccc">カタカナ1
<option value="ddd">カタカナ2
</select>

このようにソースを書いているのですが一つ目のプルダウンを「アイウエオ」に変更するとdisplayで3つ目のプルダウンが表示はされるのですがvalueが送られないのです。
CGIが悪いのかもしれませんが、とりあえずJavaScriptでoptionを非表示にできたらなあと思いまして・・・

補足日時:2007/02/28 23:20
    • good
    • 0

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