JavaScriptのラジオボタンを使用したフォームの表示・非表示を制御する方法

このQ&Aのポイント
  • JavaScriptを使って、フォーム内のラジオボタンの選択に応じて要素の表示・非表示を制御する方法について質問です。
  • 具体的な例として、テーブルを使った簡単なフォームを作成し、選択されたラジオボタンに応じてテキストフィールドを表示・非表示にする方法を知りたいです。
  • また、PHPと連携して、URLパラメータを使って初期の表示状態を設定する方法も教えていただけると助かります。
回答を見る
  • ベストアンサー

javascript ラジオボタン

javascriptのことで質問させてください。 よろしくおねがいします。 簡単なフォームをテーブルで作成しています。 例えばの例でお願いします。 <form action="" method="post"> <table> <tr> <td>表示/非表示<td> <td><input type="radio" value="1">非表示 <input type="radio" value="2">表示<td> <tr> <!--ここから表示/非表示部分--> <tr> <td>テキスト<td> <td><input type="text"><td> <tr> <!--ここまで表示/非表示部分--> </table> </form> 上記のようなフォームがあったとします。 PHPを使用していまして、 『hoge.html?str=値』 がアドレスとします。 $str=$_GET['str']; $str=1 の時は、はじめは表示 $str=2 の時は、はじめは非表示 $str="" の時は、はじめは非表示 という感じの内容でラジオボタン選択すると表示/非表示されると言うものを作成したいと思っています。 説明がわかりにくいと思いますがどうぞよろしくお願いします。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 以下のような感じではどうでしょうか。 (表示非表示の値がradioの値と差異があったので勝手にあわせてしまいました) phpの$strは$_GET['str']の値で、""の場合は2にしています。 ==== script部分 <script type="text/javascript"> window.onload = function() { var disp = document.getElementsByName('disp'); setDisp ( '<?= $str ?>' ); for ( var i = 0; i < disp.length; i ++ ) { disp[i].onclick = function() { setDisp ( this.value ); }; } }; function setDisp ( value ) { document.getElementById('area').style.display = value === '2' ? 'none' : 'block'; } </script> ==== html部分 <table> <tr> <td>表示/非表示<td> <td><input name="disp" type="radio" value="2"<?= $str === '2' ? ' checked="checked"' : '' ?>>非表示 <input name="disp" type="radio" value="1"<?= $str === '1' ? ' checked="checked"' : '' ?>>表示<td> <tr> <!--ここから表示/非表示部分--> <tr id="area"> <td>テキスト<td> <td><input type="text"><td> <tr> <!--ここまで表示/非表示部分--> </table>

taabooo
質問者

お礼

ご返答遅れて申し訳ございません ありがとうございます!! できました! 本当にソースをそのままいただき助かりました。 また何かありましたらよろしくお願い致します。

関連するQ&A

  • ラジオボタンでの表示の切替方法

    2つのラジオボタンの切替によって、表示の切替を行いたいです。 例えば、Aを選択すると(1)の入力フォームが表示され、Bを選択すると(2)が表示したいです。初期表示はAが選択された時と同じ内容となります。 <table align="center" border="0" cellpadding="0" cellspacing="0"> <tr><td><form name="Quick1"> <tr><td>選択</td> <td> <input type="radio" name="A" value="1" checked>A  <input type="radio" name="B" value="2">B  </td></tr> <tr> <td>(1)</td> <td> <input type="text" size="6" maxlength="5" name="text1" value="">- <input type="text" size="6" maxlength="5" name="text2" value="">- <input type="text" size="6" maxlength="5" name="text3" value=""> </td></tr> <tr> <td>(2)</td> <td> <input type="text" name="text7" size="43" value=""> </td></tr> </table></form></td></tr></table> すみませんが、よろしくお願い致します。

  • ラジオボタン選択で「複数ラジオボタン」をアクティブにするには?

    ■下記サンプルソースのラジオボタンの「はい」を選択すると複数のラジオボタンがアクティブになるJavaScriptがわからず困っております。教えて頂けないでしょうか。 (ページ開いた際は「いいえ checked」で複数ラジオボタンはグレーで選択無効) 用途はアンケートフォームです。 可能であればシンプルなソースで「最新のWinIE、MacSafari」に対応していると非常に助かります。先輩方よろしくお願いします。 <form name="form2" method="post" action=""> <table> <tr> <td>■「はい」を選択すると、ラジオボタン(カテゴリー1~4)がアクティブになる。 </td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">はい <input name="radiobutton" type="radio" value="radiobutton" checked>いいえ </td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">カテゴリー1 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー2 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー3 <input name="radiobutton" type="radio" value="radiobutton">カテゴリー4 </td> </tr> </table> </form>

  • ラジオボタンを一括で操作する方法を教えてください。javascript

    下記のようにフォームがあります。 チェックボックスをクリックして始めて、 同列のラジオボタンが選択できるようにしたいと考えております。 現在は、質問1のみですが質問の数がその下に増えていくと考えた場合、(例えば質問10まであると仮定して考えてください。)どのようにスクリプトを書いていけば、スマートになるかお知恵を貸していただけませんでしょうか? よろしくお願いいたします。 <form name="form1"> <table><tr> <th><input type="checkbox" name="q1_1" value="" onClick="quetion()">質問1</th> <td><input type="radio" name="q1_1a" value="a" disabled ></td> <td><input type="radio" name="q1_1a" value="b" disabled ></td> <td><input type="radio" name="q1_1a" value="c" disabled ></td> </table></form>

  • ラジオボタン選択でtextfieldをアクティブにするには?

    ■下記サンプルソースのラジオボタン「はい」を選択するとtextfieldがアクティブになるJavaScriptがわからず困っております。教えて頂けないでしょうか。 (ページ開いた際は「いいえ checked」でtextfieldはグレーで入力無効) 可能であればシンプルなソースで「最新のWinIE、MacSafari」に対応していると非常に助かります。先輩方よろしくお願いします。 <form name="form1" method="post" action=""> <table> <tr> <td>■「はい」を選択すると、textfield(カテゴリー1~4)がアクティブになる</td> </tr> <tr> <td> <input name="radiobutton" type="radio" value="radiobutton">はい  <input name="radiobutton" type="radio" value="radiobutton" checked>いいえ </td> </tr> <tr> <td> カテゴリー1<input name="textfield" type="text" size="30" maxlength="30"> <br> カテゴリー2 <input name="textfield22" type="text" size="30" maxlength="30"> <br> カテゴリー3 <input name="textfield32" type="text" size="30" maxlength="30"> <br> カテゴリー4 <input name="textfield42" type="text" size="30" maxlength="30"> </td> </tr> </table> </form>

  • 【フォーム】PHPで確認画面をだした後にボタンを

    ほぼ初心者のものです 下記のようなフォームをつくりました <form action="regist.php" method="post"> <input type="radio" name="08241" value="A11"/> <input type="radio" name="08241" value="B11"/> <input type="radio" name="08241" value="C11"/> <input type="radio" name="08241" value="D11"/> <input type="radio" name="08241" value="E11"/> <input type="radio" name="08241" value="F11"/> <input type="submit" value="登録する" /> そしてこれらを確認するためにregist.phpを作成し <table width="250" border="1"> <tr> <td width="250">選択したもの</td> </tr> <tr> <td><?php echo $_POST["08241"] ?></td> </tr> <tr> <td>●●●</td> と記載し、選んだものを表示できるようにしました ここからが皆様にお力を借りたいところなのですが フォームから「A11」が選択されて確認画面に「A11」と表示されたとき ●●●のところに下記のような情報を含んだボタンを表示させたいんです <form name="a11" action="/products/detail.php" method="post" > <input type="hidden" name="mode" value="cart" /> <input type="hidden" name="product_id" value="137" /> <input type="hidden" name="product_class_id" value="634" /> <input type="hidden" name="quantity" value="1" /><br /> <input type="submit" value="決定する" onClick="alert('選択しました')" /> </form> このボタン情報はA11~F11まであって、product_idやproduct_class_idは それぞれ異なっています どこかに一覧を作成しておいて form nameで一致したものを表示させるといった やり方なのかなとは思うのですが、その方法がわかりません PHPを使えばいいのかJavascriptがよいのかもあわせ、記述方法などをご教授いただけませんでしょうか? どうかよろしくお願いいたします

    • 締切済み
    • PHP
  • javascriptの変数の渡し方

    ラジオボタンで選択した値によって表示するテーブルを変えるフォームを作っています。 AAAは入力ボックスが1つ BBBは入力ボックスが2つ 同じphpへ送信して、入力ボックスへデータは入るのですが、javascriptの値を渡すことが出来ません。 BBBでsubmit後、BBBの入力ボックスを表示することは出来ますでしょうか。 <? echo "<form method=post action=?>"; echo "<input type=radio name='user' onclick='change_user(this.value)' uid='user' value=1"; if($user==1){ echo " checked"; } echo ">AAA"; echo "<input type=radio name='user' onclick='change_user(this.value)' uid='user' value=2"; if($user==2){ echo " checked"; } echo ">BBB"; echo "<br>"; echo "<span id=inner>"; echo "<table>"; echo "<tr>"; echo "<td>AAAのフォーム</td>"; echo "<td><input name=form1 type=text value=$form1></td>"; echo "</tr>"; echo "</table>"; echo "</span>"; echo "<span id=outer>"; echo "<table>"; echo "<tr>"; echo "<td>BBBのフォーム</td>"; echo "<td><input name=form1 type=text value=$form1></td>"; echo "<td><input name=form2 type=text value=$form2></td>"; echo "</tr>"; echo "</table>"; echo "</span>"; echo "<br>"; echo "<input type=submit value=submit>"; echo "</form>"; ?> <script language='javascript'> var inner = document.getElementById('inner'); var outer = document.getElementById('outer'); function change_user (uid) { if (uid == '2') { inner.style.display = 'none'; outer.style.display = ''; } else { inner.style.display = ''; outer.style.display = 'none'; } } change_user(document.getElementById('user').value); </script>

    • ベストアンサー
    • PHP
  • 「戻るボタン」 : ボタンを使わずに、・・・

    HTMLでは、戻るボタンは、 <FORM> <INPUT TYPE="button" VALUE="戻る" onClick="history.back </FORM> ですが、この動作で、 戻るボタンではなく、 <table><tr><td>戻る</td></tr></table> をクリックするようにしたいのですが、・・・ 可能でしょうか。 可能でしたら、htmlをお願いします。

    • ベストアンサー
    • HTML
  • ラジオボタンで入力し、その結果をCGIで表示するプログラム

    htmlで <html> <head> </head> <body> <form method="get" action="question.cgi"> <table width="50" height="" border="1" bordercolor="black" bgcolor="white" cellSpacing="0" cellpadding="5"> <tr><th>/</th><th>yes</th><th>no</th></tr> <tr><th>1</th><td><input type="radio" name="char1"></td> <td><input type="radio" name="char1"></td></tr><br> <tr><th>2</th><td><input type="radio" name="char2"></td> <td><input type="radio" name="char2"></td></tr><br> <tr><th>3</th><td><input type="radio" name="char3"></td> <td><input type="radio" name="char3"></td></tr><br> <tr><th>4</th><td><input type="radio" name="char4"></td> <td><input type="radio" name="char4"></td></tr><br> </table> <input type="button" value="送信" ><input type="reset" value="リセット"><br> </form> </body> </html> と書き、C言語でCGIを書き、ラジオボタンを押して送信ボタンを押すと 1:yes,2:no,3:no,4:yesなどと文字列で出力したいのです。 getメソッドがいいのかpostメソッドいいのかも教えていただければうれしく思います。 (この質問ではgetメソッドを使っていますが、あまり気にしないでください)

    • ベストアンサー
    • CGI
  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • ボタンクリックでフォーカス移動

    JavaScript超ビギナーなので方法がよくわかりません。 フォームにテキストボックス(配列)4個あり ボタンを押すたびに未記入のテキストボックスにカーソルを移動したいのですが。どのようにしたらいいでしょうか。 <form name="form1" method="post"> <table width="200" border="1"> <tr><td ><input type="submit" name="Submit" value="送信"></td></tr> <tr><td ><input type="text" name="name1"></td></tr> <tr><td><input type="text" name="name1"></td></tr> <tr><td><input type="text" name="name1"></td></tr> <tr><td><input type="text" name="name1"></td></tr> </table> </form>