セレクトボックスの選択されている値を取得する方法

このQ&Aのポイント
  • セレクトボックスで選択されている値を取得する方法について解説します。
  • CGIで現在選択されているセレクトボックスの値を取得する方法について説明します。
  • セレクトボックスの選択されている値を変数に代入する方法を解説します。
回答を見る
  • ベストアンサー

セレクトボックスで現在選択されている値

下記のセレクトボックスがあります。  print "<select name='atai'>";  print "<option value='abc'>abc</option>";  print "<option value='123'>123</option>";  print "<option value='xyz'>xyz</option>";  print "</select>"; 現在、選択されている値を $int の変数に入力 したいのですが、どうしたらいいのでしょうか。 例えば、$int=・・・・・・; というふうに代入 文でできることなのでしょうか。   この場合、現在表示されているCGIで、 $int が、abc か 123 か xyz か知りたい のです。

  • Perl
  • 回答数6
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
noname#20964
noname#20964
回答No.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>

myfrend
質問者

お礼

回答どうもありがとうございました。

その他の回答 (5)

  • Ikonos00
  • ベストアンサー率28% (86/302)
回答No.5

もしかして、こういうことですか? http://www.fromdfj.net/javascript/pulldown2.html

  • nebel
  • ベストアンサー率37% (117/308)
回答No.4

サーバ(CGI)側とクライアント側に分けて、順にどういう処理になればよいか書いてもらえると助かります。 1)クライアントからCGIへページ表示のリクエスト 2)CGIが1)のリクエストを元にページを出力 3)クライアントがselectで何らかのoptionを選択 4)クライアントがsubmitする 5)CGIが4)で送信されたデータを受け取る とあるわけですが。 5)で受け取るのは問題ないわけで、今回の要求は3)で受け取りたいということであってますか? 3)でCGI側が選択されたoptionの値を知るのは、基本的に不可能です。 やろうとするなら、選択されたときにjavascriptでCGIに送信する方法でしょう。 やりたかったのは、selectで選択されたoptionの値に応じて同ページの他の部分の値などを変更したいってことでしょうか?

myfrend
質問者

補足

nebelさんの言われる通り、(3)で受け取りたい ケースになります。クライアントがセレクトでoptionで選択した タイプによって、もうひとつのセレクトボックスの選択肢が異なってくるということです。   JavaScriptでの行うときは、どういう記述になりますか?教えて下さい。

noname#19175
noname#19175
回答No.3

(1)サーバー print "<select name='atai'>"; (2)クライアント(ブラウザ) サーバーから受けたHTMLデータを表示、セレクトフィールドの選択と変更 ---------- | abc ▽ | |--------| | 123 | | xyz | ---------- (2)' ブラウザの送信ボタンを押す (3)サーバー クライアントから送信されたデータを受信 で、(2)'の送信ボタンを押したタイミングで良いのでしょうか? それとも(3)のサーバーがデータを受信したタイミングでよいのでしょうか? (2)であれば、Perlでは不可能です。 JavaScriptなどを使って下さい。 (3)であれば、たとえば<select>ではなく <input type="text" name="atai"> で表示して、クライアントにて入力してもらった場合の値は取得出来ますか?

myfrend
質問者

補足

talooさん、ありがとうございます。補足します。 (2)のセレクトフィールドに変化があったときに 違うセレクトフィールドに表示させる内容を変化 させたいのです。    例えば、「abc」の場合、あ行の文字あ、い、う、え、お、から選択、     「123」の場合、数字1、2、3、4、5から選択、     「xyz」の場合、アルファベットa、b、c、d、eから選択、 という風に、sumitを押す前に、もうひとつの選択 フィールドを選択したいのです。

  • TMEspion
  • ベストアンサー率27% (5/18)
回答No.2

TMEspionです。 No.1さん同様、補足が無ければ、どストライクな回答は困難かと思われます。 でもとりあえず一例として、 <input type="submit">を押して送信した内容を 「$value = $FORM{'$name'};」とかに格納するタイプのプログラムであれば、「$FORM('atai')」の中に「'abc'」、「'123'」、「'xyz'」のどれかが入ると思います。 全部こっちで想定した上での一例なので、全然的外れかと思いますが、一例ね。あくまで一例。

myfrend
質問者

補足

すみません。補足します。 sumit前の処理になります。変化があったときでも 構いません。

  • kalze
  • ベストアンサー率47% (522/1092)
回答No.1

仕様要求がよくわかりません。 書かれているセレクトボックスを出力し、クライアントのブラウザで表示されますね。 その後、ユーザーがセレクトボックスで選択する。 その後、submitボタンを押してサーバに送信しますね。 どこの段階で選択されている値を変数に代入したいのでしょうか? 普通に考えるとsubmitされて送信されてきたデータをみて、選択されているoptionの値だと思うのですが。 送信されてきたデータの受け取りは、自作ですか? もし自作ならば、どういうロジックで受け取っているのかわからなければ具体的なアドバイスは無理です。 それともCGI.pmとかcgi-bin.plなどをお使いですか?

myfrend
質問者

補足

セレクトボックスが複数あって、最初のセレクトボッスを選択 した時に、次のセレクトボックスの選択するカテゴリを可変で 選択したいということです。なので、タイミング的には次の セレクトボックスを押す時になります。   セレクトボックスの連動をなぜ使わないかというと、 それを使った場合、次のCGIへなぜかデータが渡らない からです。すみません、補足になっているでしょうか。

関連するQ&A

  • セレクトボックスの値を増やしたい

    お世話になります。 セレクトボックスのOPTION値を増やしたいのですが、何か良い方法はないでしょうか。 実現したいことは、ボタンを押したときにテキストボックスの値をセレクトボックスの最下部に表示したいということです。 <INPUT TYPE="text" NAME="add_txt" VALUE=""> <SELECT NAME="lst"> <OPTION VALUE="aaa">aaa <OPTION VALUE="bbb">bbb <OPTION VALUE="ccc">ccc </SELECT> <INPUT TYPE="button" NAME="ent" VALUE="実行"> ------------------ この状態からtextに"ddd"という値を入れて実行ボタンを押した後、 <SELECT NAME="lst"> <OPTION VALUE="aaa">aaa <OPTION VALUE="bbb">bbb <OPTION VALUE="ccc">ccc <OPTION VALUE="ddd">ddd </SELECT> このような状態にしたいのですが、なにか方法はありますか。 ご存知の方いましたら、回答お待ちしています。

  • セレクトボックスの操作

    <select name="example1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="1" value="追加"> 例えば、上記のセレクトボックスの3を選択して送信ボタンを押したら、3以外の4つの数字の値を持ったセレクトボックス(select name="example2)を出現させたいのです。(example1を残したまま) 選択した数字以外の値を持ったセレクトボックスを出現させたいです。 <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="追加"> 上記のようになります。example2の1を選択し送信したら <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 上記の手順でセレクトボックスが3つに増えた場合のソースは次のような感じに <select name="example1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="1" value="取り消し"> <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="取り消し"> <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 取り消しを押した場合、そのセレクトボックスを削除し、一番新しいセレクトボックス(example3)に削除された値を追加したいです。 example2を取り消した場合、 <select name="example3"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 どのように記述すれば実現可能でしょうか? ご教示頂けますと幸いです。 宜しくお願いいたします。

  • セレクトボックスの「選択してください」選択しても、未選択として扱いたい

    メールフォームを作成しています。 CGIのメールプログラムを使って、セレクトボックス「A」を必須入力項目としたのですが、一番上のものが「選択されている」とみなされてしまい、改めて選択しなくても、メールが送信できてしまいます。 <select name="A"> <option value="選択してください"> 選択してください</option> <option valui="1">1</option> <option valui="2">2</option> <option valui="3">3</option> <option valui="4">4</option> </select> どうしたらいいでしょうか。 助けて下さる方、お待ちしております。

    • ベストアンサー
    • HTML
  • セレクトメニューで2つの項目や値を渡す方法はありますか?

    良かったら教えてください。 セレクトメニューで2つの項目や値を渡す方法は ありますか? 普通は、 <select name="test"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> と言う感じですが、 「テスト」を選ぶと name="test1" name="test2"の項目で、 value="1111" value="2222" 選択項目は、1つですが、2つの項目、 2つの値を次のCGIに渡す事は、 可能でしょうか? 教えてください。

    • ベストアンサー
    • HTML
  • チェックボックス&セレクトボックスからの検索

    htmlからチェックボックス&セレクトボックスを使って postgresで検索し、phpで表示するフォームを作っています。 チェックボックスで検索されたデータをセレクトボックスで 絞り込みたいのですがうまくいきません。 or の部分を and に変えたりしたのですが検索結果が 変わってしまいます。 どなたか教えてもらえないでしょうか。 HTML <input type="checkbox" name="chk1" value="1">chk1 <input type="checkbox" name="chk2" value="1">chk2 <select name="add">  <option value="北海道">北海道</option>  <option value="沖縄">沖縄</option> </select> PHP  if ($chk1 != "") {   $sqlSelect .= "abc = '" . $chk1 . "' or ";  }  if ($chk2 != "") {   $sqlSelect .= "abc = '" . $chk2 . "' or ";  }  if ($add != "") {   $sqlSelect .= "add = '" . $add . "' ;  }

    • ベストアンサー
    • PHP
  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <FORM action=./ method=post> <SELECT name=server> <OPTION value=2 selected>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> </SELECT> </FORM> こういうフォーム(FORMやOPTIONにnameがない)で [4]を選択したいです このフォームを書き換えないで(スクリプトでの書き換えなら○) どうにか変えることはできないでしょうか? IEのみの対応でいいので、お願いします

  • セレクトボックスの連動

    セレクトボックスAを切り替えると、他のセレクトボックスがAと同じになるようなものを作りたいのですが、うまくいきません。 ソースは以下の通りです。 function ChangeSelect() { var index = formA.selectA.selectedIndex; for (i=1,i<formB.selectCnt.value,i++) { if (i == index) { FormB.selectB1.options[index].value ); } } } <form name="formA"> <select name="selectA" onchange="javascript:ChangeSelect()"> <option value="りんご">りんご <option value="みかん">みかん <option value="いちご">いちご </select> </form> <form name="formB> <input type="hidden" name="selectCnt" value=***> <select name="selectB1"> <option value="りんご">りんご <option value="みかん">みかん <option value="いちご">いちご </select> </form> 存在するセレクトボックスは全て同じ値が入っています。 formAにはセレクトボックスは1つですが、formBにあるセレクトボックスは0~複数と場合によって異なります。 formBにあるセレクトボックスはselectB1、selectB2、selectB3という感じに最後の数字のみが異なるnameがつくようにしています。 <input type="hidden" name="selectCnt" value=***>のvalueには、ASPで数えたセレクトボックスの数を入れています(セレクトボックスが10個あれば10と入ります) 数が決まっていればFormB.selectB1.options[index].valueを数の分だけ増やせばいいのですが、0の時もあれば10の時もある、という場合にはどういう風に書けばいいのかわかりません。 どのように記述すれば良いのでしょうか。アドバイスお願いします><

  • VBScriptでHTMLのセレクトボックスで表示されている値に指定したい

    VBScriptでHTMLのセレクトボックスで表示されている値(value)に指定したいと思っています。どのようにすればよいのでしょうか?詳しくは下記参照。 もし、VBSで無理であるのならほかの言語で可能な言語を教えていただきたく思います。 例:”value_1”を指定してVBSで選びたい <select name="select_name" onchange="select_onchange"> <option value="value_1">value_1_1</option> <option value="value_2">value_2_2</option> </select> (注意) 下記のように位置情報で指定するのではなく、valueの値(value_1)や表示されている値(value_1_1)でしたいと思っています。 IEオブジェクト.Document.フォーム名.コンボボックス名.selectedIndex = 0からの番号

  • XMLの値をリストボックスで選択したい

    XSLTで悩んでいます・・・ XMLが以下の内容で、 <aaa><bbb>123</bbb></aaa> XSLTでテキストボックスに表示をさせる場合 <input type="text" name="hoge" value="{/aaa/bbb}"> となりますが、 セレクトボックスでXMLと同じ値を選択させたいのです。 <select name="hogesel"> <option value="121"> <option value="122"> <option value="123"> ←これを選択させたい </select> XSLT、JavaScript等使用してselectedが行える方法がありますでしょうか? ご存知の方がいらっしゃいましたらご教授願います。

    • 締切済み
    • XML
  • セレクトメニューが・・・

    CGIでHPをつくり、そのHPから入力HPへ飛びフォームの値をもとのHPに返すということをやっているのですが、ここで、セレクトメニューのvalueの値によってはそこのHPから入力のHPに飛べなくなるという現象がおきてます。 1部ですが、例を示すと・・・ print "<select name='place'>"; print "<option value='aaa:3821'>aaa</option>"; print "<option value='bbb3822'>bbb</option>"; print "<option value='ccc:3801'>ccc</option>"; print "<option value='ddd:3802'>ddd</option>"; print "</select>"; print "<br>"; となっていて、ここで小文字と数字の間に[\n]を1つでも入れるとエラーにはならずしっかり飛ぶことができますが、今のように全て文字と数字だけではなぜかエラーが起こってしまっています・・・ なぜなんでしょうか・・・・?

    • 締切済み
    • CGI

専門家に質問してみよう