• 締切済み

HTMLのフォームについて

ドロップダウンリストをHTMLのフォームで作成したときのことで悩んでいます。 1~10まで選択可能なドロップダウンリストを用意したフォームが2つあるとします。 そのフォームに送信をボタンをsubmitとしておいておきます。 "test.c"というプログラム内のprint文でHTMLコードを記述し、ブラウザで選択した値を、プログラム内で変数として使用したいと考えております。 以下のようなものを記述したとします。 <form name = "select" method="post" action="test.c"> <select name="list1"> <option value = "1"> 1 </option> ~ </select> <select name="list1"> <option value = "1"> 1 </option> ~ </select> <input type="submit" value="表示"> </form> として、 [1~10のリスト1] [1~10のリスト2] [送信] というような感じです。 このtest.cをブラウザ上で起動し、送信ボタンをおせば、 ・「0~リスト1で選択した数字」をブラウザに表示 ・その中で「リスト2で選択した数字」の表示を消す という処理がtest.cで行われるようなプログラムとします。 例として ・リスト1とリスト2は始めに1が選択されているとします。 ・「リスト1で5」、「リスト2で3」を選択して送信を押します。 ・test.cのページが更新され、ブラウザ上にはリスト2つと送信ボタン、「0・1・2・4・5」が表示されているとします ここからが質問になります。 このとき更新されたことにより、2つのリストは初期選択の1が選択された状態に戻っているが、ブラウザ上には前回送信した結果の数字「0・1・2・4・5」が表示されています。 このときに、このままやっぱり3を表示しないのではなく2を消したいとなった場合、リスト2を"2"に選択しなおすだけでなく、リスト1も再度"5"を選択しておかなければならないと思います。 この場合に、更新後のページのリストを前回選択した5と3のままにしておけば、リスト2を3から2に変更するだけで良くなるのですが、このように前回送信した状態を保持してリストを表示することは可能でしょうか。 よろしくおねがいします。

  • HTML
  • 回答数2
  • ありがとう数13

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

いくつか方法がありますが・・・私が良く使う方法を説明します。私はPerl使いですが基本は同じです。 テンプレートのフォームを用意します。 <form ****>  <select name="ABC">   <option value="1" $SELECT_ABC_1>選択肢1</option>   <option value="2" $SELECT_ABC_2>選択肢2</option>   <option value="3" $SELECT_ABC_3>選択肢3</option> とかにして、  ($SELECT_ABC_1,$SELECT_ABC_2,$SELECT_ABC_3) = '';  if($in{'ABC'} eq '1'){$SELECT_ABC_1 = "selected=\"selected\""}  elsif($in{'ABC'} eq '2'){$SELECT_ABC_2 = "selected=\"selected\""} ・・・以下略・・  cookieについても同様にチェックする。 同様に確認画面のときも、 <input type="hidden" name="ABC" value="2"> にする。同時にset-cookieにて、&ABC=2 をいれておく。 Cでも他の言語でも考え方は同じです。 XHTMLは面倒なので、HTMLでよいと思いますが

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

 可能です。分かりやすくするためには最初のフォームを含めてすべてプログラムから出力したほうが良いでしょう。  受け取ったデータは、input type="hidden"で引き継ぎますが、それがあればフォームを作成する際に利用できます。また、フォームの戻るではなくブラウザの戻るを使われた時のためにcookieを併用すると良いでしょう。

qwewqwe
質問者

補足

上の例のForm(2個目のリストのnameはlist2です。間違えました。)で、selectを使ったリストの場合、hiddenをどのように使えば、前回の選択結果を保持してリスト中のその要素をselectedしておけるのでしょうか。 初歩的な質問ばかりですいません。

関連するQ&A

  • HTMLのフォームについて

    あるサーチプログラムに以下のソースでデータを送信しています。 一覧に表示する件数は <SELECT name=max_row> <OPTION value=20 selected>20</OPTION></SELECT> 件/頁とし、最初の&nbsp; <SELECT name=max_count> <OPTION value=200 selected>200</OPTION></SELECT> 件まで検索します。 現在はセレクトボックスにて選択できるようになっていますが、ブラウザでは非表示にしていつも同じ条件で送信したいと思っています。試しに <SELECT name=max_row> <OPTION value=20 selected>20</OPTION></SELECT> 件/頁とし、最初の&nbsp; <SELECT name=max_count> <OPTION value=200 selected>200</OPTION></SELECT> この部分を <INPUT type=hidden balue=20 name=max_row> <INPUT type=hidden balue=200 name=max_count> に変更して送信してみると -- ORACLE error when processing OCI function ODESCR ORA-00921: SQLコマンドが不完全です。 Exiting with FAILURE status 1 となり、うまくいきませんでした。 説明不足などわかりにくい点があるかと思われますが、どうかご教授してください。

    • ベストアンサー
    • HTML
  • HTMLのフォームをHDMLに変換するソフトってありますか?

    以下のような一般的なフォームで、 単一選択結果を同じ画面に表示したいのですが どうすれば良いでしょうか? 単純なHDMLの例はインターネット上に落ちていますが少しだけ複雑になるとの例がないようです。。 HTML->HDMLに変換してくれるソフトはないでしょうか? ■一番好きな動物と度合いを選択してください <form name="fm" action="test.cgi" method="get"> <select name="a"> <option value="1">りす <option value="2" selected>たぬぼう <option value="3" selected >いぬ </select> <br> <select name="love"> <option value="1" selected>好き <option value="0" >大好き </select> </form>

  • selectフォームの特性について

    オプションメニューの表示について教えてください。 例) <select name="test" size="1" > <option value="0">---------</option> <option value="1">test1</option> <option value="2">test2</option> <option value="3" selected>test3</option> <option value="4">test4</option> <option value="5">test5</option> </select> 以上のようにselectフォームを設定した場合に、 クリックするとtest3が一番上に選択され、test4、test5の順に表示されますが、 これをtest3が選択された状態でtest1、test2、test3、test4、test5と いうように表示させることは可能なのでしょうか? もし、可能ならどのような方法があるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • リストボックスを使って検索フォームを作りたいのですが

    教えて!gooの質問フォームのようなものが作りたいのですが出来なくて困っています。 リストボックスを2つ設けて、最初のリストボックスから選んだ項目によって、次のリストボックスに表示させる項目を選択したいのですが。 例えば、下のlist1のリストボックスから「名前」を選んだ場合にはlist2のリストボックスに氏名を、「日付」を選んだ場合には日付をリストに表示したいですが... <SELECT name="list1"><OPTION value=default>検索項目</OPTION> <option value=name>名前</option>); <option value=date>日付</option>); <option value=team>チーム</option>); </SELECT> <SELECT name="list2"><OPTION value=default>氏名</OPTION> <option value=suzuki>鈴木</option>); <option value=sato>佐藤</option>); <option value=tanaka>田中</option>); </SELECT> <SELECT name="list2"><OPTION value=default>日付</OPTION> <option value=2004>2004年度</option>); <option value=2003>2003年度</option>); <option value=2002>2002年度</option>); </SELECT> 書き方や説明が分かりにくいかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 【HTML5】selectにrequierd

    HTML5でformのグループ化されたselectを必須にしたいと思い、 下記のようにrequiredを記述しました。 <select name="sample[]" required> <option value="">--</option> <optgroup label="カテゴリA"> <option value="1">選択肢1</option> <option value="2">選択肢2</option> </optgroup> <optgroup label="カテゴリB"> <option value="3">選択肢3</option> </optgroup> </select> そうすると、選択肢1を選択していても「必須項目です」と表示され、フォームが送信できません。 valueの値が1だと選択済として扱われないのでしょうか。 optgroupをなくすと選択肢1を選択した状態で送信できました。 valueの値は1で送信したいのですが、可能でしょうか。

  • メールフォームでプルダウンの内容だけ送られてこない

    HTMLファイルでデザインができるメールフォームのcgiで、 名前とEメールアドレスは送られてくるのですが プルダウンの内容だけ、送られてこないんです。 ちなみに携帯サイト用です。 プルダウンの入れ方がおかしいんだと思うのですが 何がいけないのでしょうか? --------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>フォームメール</title> </head> <body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink="#0000FF"> <center>フォームメール</center> <hr> <form action="./mail.cgi" method="${INFO_METHOD}"> <input type="hidden" name="system_mode" value="preview"> <input type="hidden" name="need_input_message" value="1"> 名前<br> <input type="text" name="system_name" value=""><br> Eメール<br> <input type="text" name="system_mail" value=""><br> テスト<br> <select name="test01"> <option value="" selected="selected">選択してください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> <option value="テスト4">テスト4</option> </select> テスト<br> <select name="test02"> <option value="" selected="selected">選択してください</option> <option value="テスト1">テスト1</option> <option value="テスト2">テスト2</option> <option value="テスト3">テスト3</option> <option value="テスト4">テスト4</option> </select> <br> <input type="checkbox" name="system_copy" value="on" checked> 送信者にコピーを送る<br> <br> <input type="submit" value="確認画面へ"> </form> <hr> ▲<a href="${INFO_BACK}">戻る</a> <hr> </body> </html> --------------------------------------- 今はこうなってます。 何か間違っている箇所、足りない箇所がありましたら ぜひ教えてください。 よろしくお願い致します。

    • ベストアンサー
    • HTML
  • フォームを送信して選択股をそのままにしたい

    フォームを送信してそのフォームで選択した内容を フォームの下の部分に表示するようなプログラムを作りたいのですが 送信するとフォームの選択内容が戻ってしまいます。 選択を保持して表示するにはどうしたらよいですか? 路線情報の検索みたいな感じにしたいということです。 ****self.php**** <html> <head></head> <body> <form action='self.php' method=get> <select name='num' id='num'> <option name='5' value='5'>5</option> <option name='7' value='7'>7</option> </select> <br><input type=submit value='送信'> <form> <script language="javascript"> document.open(); document.write(<?php print $_GET["num"]; ?>); document.close(); </script> </body> </html>

  • 検索フォーム nameがAもしくはBもしくはCの値が○○であれば、結果を表示させる

    以下のような検索フォームはできるでしょうか? 「name=AもしくはBもしくはC の値が○○であれば、結果を表示させる」 <SELECT name="AもしくはBもしくはC"> <OPTION value=""> 月を選択 </OPTION> <OPTION value="01">1月</OPTION> <OPTION value="02">2月</OPTION> <OPTION value="03">3月</OPTION> <OPTION value="04">4月</OPTION> </SELECT> 初心者なので、教えていただけると助かります。 よろしくお願いします。

  • 入力フォームの値をEXCELに出力したい(asp)

    asp(.NETではありません)で、入力フォームを作っています。 そして送信ボタンを押したら、フォームの値をEXCELに出力したいのです。 現在、aspの中にvbsを記述し、ボタンを押したらEXCELを開く・・・ところまでは出来ているのでそこにリストで選択された値を出力したいのですが、どうしても値を渡す事ができません。 <SCRIPT LANGUAGE="VBScript"> <!-- Sub cmdMain_OnClick set objExcel= CreateObject("Excel.Application") objExcel.Visible=True objExcel.Workbooks.Open "C:\sample.xls" End Sub --> </SCRIPT> <html> <head> <title>フォームの入力値を受け取る</title> </head> <body> <form method="post" action="form.asp"> <select name="list"> <option value="test1">テスト1</option> <option value="test2">テスト2</option> <input type="button" name="cmdMain" value="作表"> </form> </body> </html> このあと、どのようにしたらリストの値をEXCELに渡す事ができるのでしょうか。 お力をお貸し下さい、宜しくお願い致します。

  • 変数にフォーム名を指定したい

    下のスクリプトは、プルダウンメニューの項目を選択するとフォームにそのvalueを渡すものです。 フォームに original という name を指定しています。 putselect関数の中の document.reg.original の original を直で打つのではなく、 putselectの引数として、指定したのですがどのようにすると良いでしょうか? JavaScript function putselect(obj){ document.reg.original.value = obj.options[obj.selectedIndex].value; } HTML <form name="reg"> <input name="original"> <select onchange="putselect(this)"> <option >#作品の選択</option> <option value="a">A</option> <option value="b">B</option> <option value="c">C</option> </select> </form> <hr> こうなってほしい。 function putselect(obj,フォーム名の変数){ document.reg.フォーム名の変数.value = obj.options[obj.selectedIndex].value; } HTML <form name="reg"> <input name="original"> <select onchange="putselect(this,original)"> <option >#作品の選択</option> <option value="a">A</option> <option value="b">B</option> <option value="c">C</option> </select> </form> <hr> これと同じ動作であれば、nameでなくidなどでも構いません。 よろしくお願い致します。