フォーム送信で選択内容を保持して表示するプログラムの作成方法

このQ&Aのポイント
  • フォーム送信後も選択内容を保持して表示する方法について教えてください。
  • フォームの選択肢をそのまま表示するプログラムの作成方法を知りたいです。
  • フォーム送信時に選択された項目を再度表示する方法を教えてください。
回答を見る
  • ベストアンサー

フォームを送信して選択股をそのままにしたい

フォームを送信してそのフォームで選択した内容を フォームの下の部分に表示するようなプログラムを作りたいのですが 送信するとフォームの選択内容が戻ってしまいます。 選択を保持して表示するにはどうしたらよいですか? 路線情報の検索みたいな感じにしたいということです。 ****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>

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

たとえばこんな風に処理します <?PHP $select["num"]=array(); $option["num"]=array("nodata","5","7"); $request["num"]=(isset($_REQUEST["num"]) and in_array($_REQUEST["num"],$option["num"]))?$_REQUEST["num"]:"nodata"; foreach($option["num"] as $val){ $select["num"][$val]=($request["num"]===$val)?" selected=\"selected\"":""; } //print_r($select); //チェック用 ?> <html> <head></head> <body> <form> <p> <select name='num'> <option value=''<?PHP print $select["num"]["nodata"];?>>選択する</option> <option value='5'<?PHP print $select["num"]["5"];?>>5</option> <option value='7'<?PHP print $select["num"]["7"];?>>7</option> </select> <input type=submit value='送信'> </p> <form> </body> </html>

cern5100
質問者

お礼

ありがとうございました。 例で示してくれてわかりやすかったです。 勉強してみます。

その他の回答 (1)

  • think49
  • ベストアンサー率59% (285/482)
回答No.1

form内容の保持はサーバサイド(PHP)で処理すべきです。 PHPなら $_GET でform内容を受け取れるはずなので <option selected> で選択させて下さい。 document.write(<?php print $_GET["num"]; ?>); この部分もPHPで出力すれば済むはずでJavaScriptで出力する必要はないように思えます。

cern5100
質問者

お礼

早速の回答ありがとうございます。 >>document.write(<?php print $_GET["num"]; ?>); よく考えたらわずらわしい事やっちゃってましたね 初めフォームの状態をJavaScriptで抽出して書きだそうとしてたので そこにphpの要素を取り入れたら変な書き方になってしまいました。 問題の箇所以外の部分にも不安があったので、ありがとうございます。 選択させる部分が具体的にいまいちわからなかったのですが <option name='5' value='5' <?php print ($_GET['num']==5) ? "selected" : ""; ?> >5</option) > <option name='7' value='7' <?php print ($_GET['num']==7) ? "selected" : ""; ?> >7</option> このような書き方で問題ないですか?

関連するQ&A

  • ボタンを押して計算結果を出したい

    下記のもの、うまくいきません。 どのようにしたらよいのでしょうか? 教えてください。よろしくお願いします。 <HTML> <HEAD> <TITLE>Calculator</TITLE> <SCRIPT language = "JavaScript"> function calc(Submit){ Num1 = document.foam1.Num1; Num2 = document.foam1.Num2; Ans = document.foam1.Ans; document.foam1.Ans.value = s1 Ans s2; } </SCRIPT> </HEAD> <PRE> 数値1 演算子 数値2 答え</PRE> <FORM METHOD=GET ACTION="/calc/calc.exe"> <INPUT NAME="Num1" VALUE="" onChange="calc()"> <SELECT NAME="Opr" SIZE=1 VALUE="" onChange="calc()"> <OPTION>+<OPTION>-<OPTION>*<OPTION>/</SELECT> <INPUT NAME="Num2" VALUE="" onChange="calc()"> = <INPUT NAME="Ans" VALUE="" onChange="calc()"> <INPUT TYPE="Submit" VALUE="計算"> </FORM> <H2></H2> </HTML>

  • selectでのフォーム送信

    下記の質問で別の解決手順を思いついたのですが技術力が不足しているのでどなたか助けてください。 フォームのselectが変更されたときに、そのフォームの内容をcgiファイルに送信するようなスクリプトがどこかにありませんか。具体的には、 <form name="form1" method="get" action="・・・.cgi"> <input type="text" name="text" size=20> <select name="sele" onChange()> <option・・・ <option・・・ </select> </form> といったフォームで、onChange()のなかでform1をsubmitしたのと同じ結果になるようにJavaScriptを書き込みたいのです。 どうかよろしくお願いします。

  • セレクトで選んだ数の計算方法

    初心者なので基本的な質問ですが、よろしくお願いします。 セレクトで選んだ数値が2つあり、その積を表示したいのです。 どうしたらよいでしょうか。 </script> <script langauage="JavaScript"> <!-- function calcNum(){ var num1 = parseInt(document.getElementById('s1').value); var num2 = parseInt(document.getElementById('s2').value); var kei = num1 * num2; } //--> </script> </head> <body> <form name="form1"> <select size="1" name="select2" id="s2" onchange="selectChange()"> <option value="5"> 5</option> <option value="9"> 9</option> </select> </form> <form name="form1"> <select size="1" name="select1" id="s1" onchange="selectChange()"> <option value="2"> 2</option> <option value="12">12</option> </select> </form> <input type="text" name="kei" size="10">  <input type="button" value="計算" onmousedown="calcNum()"> スクリプトのところだけの抜粋でわかりにくいかもしれないのですが、 どのようにしたら良いか、教えてください。 根本的に違っているようでしたら、どうやればよいのか教えてください。 よろしくお願いします

  • 入力フォームでdisabledによる入力制限

    プルダウンをdisabledで制御しようと思っています。 yearを選択するまでmonthを無効にしたいのですが、うまくいきませんでした。 下記の簡略化したソースでも動作しませんでした。 テストでwindow.openを入れると動作するので、document...の文かとは思うのですが。 どなたかお気づきでしたら、お教え下さい。 よろしくお願い致します。 <html> <head> <title>inputtest</title> <SCRIPT LANGUAGE="JavaScript"> function menu_ctrl(){ var sel_num = document.sel_inp.year.selectedIndex; if(sel_num == 0){ document.sel_inp.month.disabled = false; // window.open("http://www.google.co.jp/"); } } </SCRIPT> </head> <body onload="menu_ctrl()"> <form name="sel_inp"> <select name="year" onchange="menu_ctrl()"> <option value="00" style="color:#AAAAAA">null</option> <option value="01">2007</option> <option value="02">2008</option> <option value="03">2009</option> </select> <select name="month"> <option value="00" style="color:#AAAAAA">null</option> <option value="01">1</option> <option value="02">2</option> <option value="03">3</option> </select> </form> </body> </html>

  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <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のみの対応でいいので、お願いします

  • Javascriptでセレクトメニューの選択チェックの方法

    Javascriptでセレクトメニューのフォームをチェックしたいのですが、 リストメニューの「選択して下さい」を選んだままだと、「番号を選択して下さい。」とエラーを出したいのですが、下記の様に書いてみたのですが、うまく動きません…どのように書けばいいか教えて下さい。宜しくお願いします。 <script language=\"JavaScript\"> <!-- function Check() { var str = document.form.a.value; if(document.form.a.value == "0") { alert("番号を選択して下さい"); } //--> </script> <form id="form" name="form" method="post" action="##"> <select name="a" onblur="Check();"> <option value="0">選択して下さい</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type="submit" name="Submit" value="登録" onClick="Check();"> </form>

  • フォームのドロップダウンで未選択のチェックをしたいのですが、下記のよう

    フォームのドロップダウンで未選択のチェックをしたいのですが、下記のようにしたのですがうまくいきません。・・・原因は id[1] だと思うのですが、こういう場合JavaScriptには、どのように記述すればよいのでしょうか? ※ドロップダウンの name="id[1]" は、変更できません。 よろしくお願いします。 <script language="JavaScript"> <!-- function check(){ if(document.cart_quantity.id[1].selectedIndex == 0){ alert('選択してください'); return false; } return true; } //--> </script> <form name="cart_quantity" method="post" action="" onSubmit="return check()"> <select gtbfieldid="272" name="id[1]" id="attrib-1"> <option value="1" selected="selected">選択してください</option> <option value="2">いちご</option> <option value="3">みかん</option> <option value="4">りんご</option> </select> <input type="submit" value="送信" name="submit"> </form>

  • 複数のvalue値を返すには

    Aを選択した時10、Bを選択した時100、Cなら1000と <input type="text" name="TEXT" value="">に表示されるように以下のようなjavascriptを記述しましたが、 Aの時10と20を、Bの時100と200、Cの時1000と2000が もうひとつの<input type="text" name="TEXT2" value="">に表示できるようにするにはどうしたらよいのでしょうか。 記述方法を教えていただければ一番いいのですが、サンプルがあるページでもいいので、教えてください。 <script type="text/javascript"> <!-- function kai(){ document.FORM.TEXT.value = document.FORM.num.value; } //--> </script> </head> <body> <form name="FORM"> <input type="text" name="TEXT" value=""> <select name="num" onChange="kai()"> <option value="10">A</option> <option value="100">B</option> <option value="1000">C</option> </select> </form>

  • 1ページで2つのフォームをチェックしたいのですが…

    1つのページに同じ項目のフォームを2つ作りました。 そしてそれにチェックを設けたいと思いフォームチェックのスクリプトを入れてみました。 が、しかし、、 上のフォームはチェックが動くのですが、 下のフォームは何を入れてもチェックがエラー検出をして 次のページに進めなくなってしまいます。。 こちらはどのようにしたら両方のチェックが働きつつ 次のページに値を渡せるのでしょうか? 正しい書き方を教えてください。 よろしくお願いします。 <html> <head> <script language="JavaScript"> <!-- // 入力チェック function chkInputForm() { Error = new Array(); i = 0; // お客様の業種入力チェック if (document.forms[0].elements["part"].selectedIndex == 0) { Error[i] = "[ 1・2の選択 ] は必須項目です。"; i++; } // 会社(事務所)のご住所入力チェック if (document.forms[0].elements["pref"].selectedIndex == 0) { Error[i] = "[住まい] は必須項目です。"; i++; } // 未入力があればアラート if (Error.length > 0) { ErrorText = Error.join("\n"); alert ("以下の項目は必須です。\n\n"+ErrorText); return false; } return true; } //--> </script> </head> <body> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> <form action="inquiry.php" method="post" onsubmit="return chkInputForm()"> <table class="table" summary="お問合せテーブル"> <tbody><tr> <th>1か2</th> <td> <select name="part" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">1</option> <option value="2">2</option> </select> </td> </tr> <tr> <th>住まいは</th> <td> <select name="pref" style="width: 200px;"> <option value="0">---ご選択下さい---</option> <option value="1">日本</option> <option value="2">海外</option> </select> </td> </tr> </tbody></table> <input class="iepng" name="button" value="送信" type="submit"> </form> </body> </html>

  • プルダウンで選択したページにフォームデータを送る

    a.htmlからプルダウンで選択した1~6までのhtmlに、フォームデータを送る ということは可能でしょうか? いろいろ組み合わせたりしていますがうまくいきません。 どなたかご教授お願い致します。 <SCRIPT LANGUAGE="JavaScript"> <!-- function jumpMenu(){ location=(document.link.list.options [document.link.list.selectedIndex].value); } //--></SCRIPT> <SCRIPT LANGUAGE="JavaScript"> <!-- // sendURL = " jumpMenu()"; function sendData() { sData = escape(doument.myFORM.theData.value); Location.href = sendURL + "?"+sData; } //--> </SCRIPT> <form name="myFORM"> <SELECT NAME="list"> <OPTION VALUE="1.html" SELECTED>1</OPTION> <OPTION VALUE="2.html">2</OPTION> <OPTION VALUE="3.html">3</OPTION> <OPTION VALUE="4.html">4</OPTION> <OPTION VALUE="5.html">5</OPTION> <OPTION VALUE="6.html">6</OPTION> </SELECT> <INPUT TYPE="TEXT" SIZE="61" NAME="a"> <INPUT TYPE="submit" VALUE="GO" onClick="sendData()"> <INPUT TYPE="reset" VALUE="クリア">

専門家に質問してみよう