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

はじめのリストボックスで指定すれば、
隣のリストボックスには指定された関係のもののみを表示させ、
「指定なし」とすれば隣のリストには、
存在するものすべてを表示させたいのですが、可能でしょうか?

具体的には、はじめのリストで、「福岡県」を選ぶと、次のリストには「福岡県の都市」のみが表示されていて、「指定なし」にすると「九州全域の都市」がずらずらと表示されるようなものです。

リストの中身はCGIを利用して追加させています。

A 回答 (2件)

このサイトを参考になされてはいかがでしょうか?


http://www.pafiac.com/javascript/java3-1.html
右クリックしてソース表示にすると良くわかります。

参考URL:http://www.pafiac.com/javascript/java3-1.html
    • good
    • 0

この手の動作を実現するには、


1.都道府県選択画面と市町村選択画面の2段階にする。
2.JavaScriptで選択項目を変化させる。
3.選択したタイミングでsubmitして画面を表示しなおす。

なんて実現方法があります。
2.はJavaScriptのバージョンで動作が異なったりするのを確認する必要がありますし、そもそもJavaScriptを無効にしていたらなにも動作しません。
3.は表示し直したときに、他の選択・入力項目も反映し直さなければなりません。
そんな理由で私的には、1.をおすすめしますが、
あえてJavaScriptで変化させるとしたら、
とりあえず全ての選択項目をクライアントに送る必要があります。そうでないとJavaScriptで使えないので。
長くなりましたが、以下、サンプルです。
参考URLに実際のものがおいてあります。

********************
<SCRIPT LANGUAGE=javascript>
//市町村
function citydata(area, city, name){
this.area = area;
this.city = city;
this.name = name;
}
//CGIで動的に作成 ここから
city = new Array(8);
city[0] = new citydata(0, 0, "福岡市");
city[1] = new citydata(0, 1, "飯塚市");
city[2] = new citydata(0, 2, "大川市");
city[3] = new citydata(0, 3, "大牟田市");
city[4] = new citydata(1, 0, "鹿児島市");
city[5] = new citydata(1, 1, "出水市");
city[6] = new citydata(1, 2, "指宿市");
city[7] = new citydata(1, 3, "大口市");
//CGIで動的に作成 ここまで

function change(sel){
with (document.main.sityouson){
length = 0;
for (i = 0; i < city.length; i++){
if (sel == "" || sel == city[i].area){
length++;
options[length - 1].value = city[i].city;
options[length - 1].text = city[i].name;
}
}
}
}
</SCRIPT>

<HTML>
<BODY onLoad="change('')">
<FORM NAME=main>
都道府県:
<SELECT NAME=todoufuken onChange="change(this.options[this.selectedIndex].value)">
<OPTION value="">指定なし
<OPTION value="0">福岡県
<OPTION value="1">鹿児島県
</SELECT><BR>
市町村:
<SELECT NAME=sityouson>
</SELECT><BR>

</FORM>
</BODY>
</HTML>
********************

「CGIで動的に作成」とある範囲をCGIで出力するようにして、
都道府県の方をchangeしたら、都道府県に属する市町村のみを、
市町村リストに追加するようにしています。

参考URL:http://users.goo.ne.jp/sasadora/select.html
    • good
    • 0

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