• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptの変数の渡し方)

javascriptの変数の渡し方とラジオボタンでテーブルを変えるフォームの作成方法

このQ&Aのポイント
  • javascriptの変数を渡す方法と、ラジオボタンで選択した値によって表示するテーブルを変えるフォームの作成方法について説明します。
  • 質問文章では、AAAとBBBというラジオボタンがあり、BBBを選択した後にBBBの入力ボックスが表示されるかどうかについての質問があります。
  • PHPを使用してフォームを作成し、javascriptを使ってラジオボタンの選択に応じてテーブルの表示を切り替えていますが、BBBの入力ボックスの表示に問題があるようです。

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

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

えーと。 同じフォームの中に、AAAとBBBで同じ名前(form1)のテキストフィールドが あるので、これはだめです。別名で管理してください。 それとechoの連発はいただけません。ヒアドキュメントにしましょう 以下を踏まえてこんな感じで書くとよろしいかと。 <script language="javascript"> window.onload=function(){ inner = document.getElementById("inner"); outer = document.getElementById("outer"); var user=document.forms[0].user; var uid=0; if(user[0].checked) uid=1; if(user[1].checked) uid=2; change_user(uid); } function change_user(uid){ if(uid == "2"){ inner.style.display = "none"; outer.style.display = "inline"; }else if(uid=="1"){ inner.style.display = "inline"; outer.style.display = "none"; } } </script> <?PHP $checked["user"][$_REQUEST["user"]]=" checked"; print <<<eof <form method="get" action="{$_SERVER["PHP_SELF"]}"> <input type="radio" name="user" onclick="change_user(this.value)" id="user1" value="1"{$checked["user"]["1"]}><label for="user1">AAA</label> <input type="radio" name="user" onclick="change_user(this.value)" id="user2" value="2"{$checked["user"]["2"]}><label for="user2">BBB</label> <br> <span id="inner"> <table> <tr> <td>AAAのフォーム</td> <td><input name="form1" type="text" value="{$_REQUEST["form1"]}"></td> </tr> </table> </span> <span id="outer"> <table> <tr> <td>BBBのフォーム</td> <td><input name="form2" type=text value="{$_REQUEST["form2"]}"></td> <td><input name="form3" type=text value="{$_REQUEST["form3"]}"></td> </tr> </table> </span> <br> <input type="submit" value="submit"> </form> eof; ?>

cefirosp
質問者

補足

>>同じフォームの中に、AAAとBBBで同じ名前(form1)のテキストフィールドが そうですよね、重複ではsubmit後に二番目が優先でした。 >>それとechoの連発はいただけません。ヒアドキュメントにしましょう そうだったのですか、以後気をつけます。 ソースの見直しありがとうございます。 AAAもしくはBBBで送信した場合、チェックされて表示はされているのですが テキストボックスが初期の二つ出る状態になっていまいます。 こちらも継続してAAAならAAAのテキストボックスのみ表示 とするのはやはり難しいでしょうか。

関連するQ&A