• 締切済み

コンボボックス1の条件でコンボ2選択肢をクエリで動的に取得したい

早速ですが、現在PHP&Javascriptでサイト構築中です。 その中で、コンボボックス1で選択した条件でコンボボックス2の 選択肢を動的に変化させたいのですが、画面ロード時に全てのパターン を読み込むのではなく(これはサンプルを見つけました)、 コンボ1選択時にクエリを発行してコンボ2の選択肢を取得して 反映させることは可能でしょうか。 可能であれば、具体的な実現方法をご教示願えませんでしょうか。 未熟故、的外れな質問でしたらご指摘下さい。 よろしくお願いいたします。

みんなの回答

noname#84373
noname#84373
回答No.1

<html> <head> <script type="text/javascript" src="prototype.js"></script> </head> <body> <form> <select id="a" onChange="changeOption('b',this.value)"> <option value="0" selected>好みは?</option> <option value="1">普通</option> <option value="2">やばい</option> </select><br> <select id="b"> </select> <script> function changeOption(id,val){ var tm = (new Date()).getTime(); new Ajax.Request('test.php', { method:'get', parameters:'menu='+val+'&c='+tm, onSuccess:function(oj){retData(id,oj.responseText); } }); } function retData(id,oj){ var dt=oj.split('\n'); var txt=[]; var val=[]; for(var i=0;i<dt.length;i++){ var buf=dt[i].split('\t'); val.push(buf[0]); txt.push(buf[1]); } setSelectOption(id,txt,val,val[0],val[0]); } function setSelectOption(id_name ,text_array, value_array, default_value, select_value){ var o = document.getElementById( id_name ); while( o.hasChildNodes() ) o.removeChild( o.lastChild ); for(var i=0, n, mx = text_array.length; i<mx; i++){ var n = new Option( text_array[i], value_array[i],(default_value==value_array[i]),(select_value==value_array[i])); try{ o.add( n, null) } catch( ex ){ o.add( n ); } } } </script> --------------- test.php <?php $menu=$_GET['menu']; $ret =''; switch( $menu ){ case '1': $ret="0\t指定してください\n1\t男\n2\t女"; break; case '2': $ret="0\t指定してください\n1\tオカマ\n2\tオナベ"; break; default: $ret="0\tありません"; break; } echo $ret;

smython
質問者

お礼

pipi様ありがとうございます。 ぱっと見、理解できませんでした;; 実際のものに落とし込み、ジックリ解析したいと存じます。 まずはお礼まで