- ベストアンサー
セレクトボックスの選択されている値を取得する方法
- セレクトボックスで選択されている値を取得する方法について解説します。
- CGIで現在選択されているセレクトボックスの値を取得する方法について説明します。
- セレクトボックスの選択されている値を変数に代入する方法を解説します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんなことでしょうか。 IE6のみ確認。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>連動select</title> <script type="text/javascript"> <!-- B = new Array(); B[0] = new Array("a","i","u","e","o"); B[1] = new Array("ka","ki","ku","ke","ko"); B[2] = new Array("sa","si","su","se","so"); B[3] = new Array("ta","ti","tu","te","to"); B[4] = new Array("na","ni","nu","ne","no"); function select(){ var No=document.getElementsByTagName('select')[0].selectedIndex; var SELECT = document.getElementsByTagName('select')[1]; var OPTION = SELECT.getElementsByTagName('option'); var cc = OPTION.length; if(cc != 0){for( k = 0 ; k < cc ; k++ ){SELECT.removeChild(OPTION[0]);}} for(k = 0;k < B[No].length;k++){ var OPT = document.createElement ('option'); var OPTTEXT = document.createTextNode(B[No][k]); SELECT.appendChild(OPT); OPT.setAttribute('value',B[No][k]); OPT.appendChild(OPTTEXT); } } //--> </script> </head> <body onload="select()"> <select onchange="select()"> <option value='a'>a</option> <option value='ka'>ka</option> <option value='sa'>sa</option> <option value='ta'>ta</option> <option value='na'>na</option> </select> <select></select> </div> </body> </html>
その他の回答 (5)
- Ikonos00
- ベストアンサー率28% (86/302)
もしかして、こういうことですか? http://www.fromdfj.net/javascript/pulldown2.html
- nebel
- ベストアンサー率37% (117/308)
サーバ(CGI)側とクライアント側に分けて、順にどういう処理になればよいか書いてもらえると助かります。 1)クライアントからCGIへページ表示のリクエスト 2)CGIが1)のリクエストを元にページを出力 3)クライアントがselectで何らかのoptionを選択 4)クライアントがsubmitする 5)CGIが4)で送信されたデータを受け取る とあるわけですが。 5)で受け取るのは問題ないわけで、今回の要求は3)で受け取りたいということであってますか? 3)でCGI側が選択されたoptionの値を知るのは、基本的に不可能です。 やろうとするなら、選択されたときにjavascriptでCGIに送信する方法でしょう。 やりたかったのは、selectで選択されたoptionの値に応じて同ページの他の部分の値などを変更したいってことでしょうか?
補足
nebelさんの言われる通り、(3)で受け取りたい ケースになります。クライアントがセレクトでoptionで選択した タイプによって、もうひとつのセレクトボックスの選択肢が異なってくるということです。 JavaScriptでの行うときは、どういう記述になりますか?教えて下さい。
(1)サーバー print "<select name='atai'>"; (2)クライアント(ブラウザ) サーバーから受けたHTMLデータを表示、セレクトフィールドの選択と変更 ---------- | abc ▽ | |--------| | 123 | | xyz | ---------- (2)' ブラウザの送信ボタンを押す (3)サーバー クライアントから送信されたデータを受信 で、(2)'の送信ボタンを押したタイミングで良いのでしょうか? それとも(3)のサーバーがデータを受信したタイミングでよいのでしょうか? (2)であれば、Perlでは不可能です。 JavaScriptなどを使って下さい。 (3)であれば、たとえば<select>ではなく <input type="text" name="atai"> で表示して、クライアントにて入力してもらった場合の値は取得出来ますか?
補足
talooさん、ありがとうございます。補足します。 (2)のセレクトフィールドに変化があったときに 違うセレクトフィールドに表示させる内容を変化 させたいのです。 例えば、「abc」の場合、あ行の文字あ、い、う、え、お、から選択、 「123」の場合、数字1、2、3、4、5から選択、 「xyz」の場合、アルファベットa、b、c、d、eから選択、 という風に、sumitを押す前に、もうひとつの選択 フィールドを選択したいのです。
- TMEspion
- ベストアンサー率27% (5/18)
TMEspionです。 No.1さん同様、補足が無ければ、どストライクな回答は困難かと思われます。 でもとりあえず一例として、 <input type="submit">を押して送信した内容を 「$value = $FORM{'$name'};」とかに格納するタイプのプログラムであれば、「$FORM('atai')」の中に「'abc'」、「'123'」、「'xyz'」のどれかが入ると思います。 全部こっちで想定した上での一例なので、全然的外れかと思いますが、一例ね。あくまで一例。
補足
すみません。補足します。 sumit前の処理になります。変化があったときでも 構いません。
- kalze
- ベストアンサー率47% (522/1092)
仕様要求がよくわかりません。 書かれているセレクトボックスを出力し、クライアントのブラウザで表示されますね。 その後、ユーザーがセレクトボックスで選択する。 その後、submitボタンを押してサーバに送信しますね。 どこの段階で選択されている値を変数に代入したいのでしょうか? 普通に考えるとsubmitされて送信されてきたデータをみて、選択されているoptionの値だと思うのですが。 送信されてきたデータの受け取りは、自作ですか? もし自作ならば、どういうロジックで受け取っているのかわからなければ具体的なアドバイスは無理です。 それともCGI.pmとかcgi-bin.plなどをお使いですか?
補足
セレクトボックスが複数あって、最初のセレクトボッスを選択 した時に、次のセレクトボックスの選択するカテゴリを可変で 選択したいということです。なので、タイミング的には次の セレクトボックスを押す時になります。 セレクトボックスの連動をなぜ使わないかというと、 それを使った場合、次のCGIへなぜかデータが渡らない からです。すみません、補足になっているでしょうか。
お礼
回答どうもありがとうございました。