- ベストアンサー
javascriptの変数の渡し方とラジオボタンでテーブルを変えるフォームの作成方法
- javascriptの変数を渡す方法と、ラジオボタンで選択した値によって表示するテーブルを変えるフォームの作成方法について説明します。
- 質問文章では、AAAとBBBというラジオボタンがあり、BBBを選択した後にBBBの入力ボックスが表示されるかどうかについての質問があります。
- PHPを使用してフォームを作成し、javascriptを使ってラジオボタンの選択に応じてテーブルの表示を切り替えていますが、BBBの入力ボックスの表示に問題があるようです。
- みんなの回答 (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; ?>
補足
>>同じフォームの中に、AAAとBBBで同じ名前(form1)のテキストフィールドが そうですよね、重複ではsubmit後に二番目が優先でした。 >>それとechoの連発はいただけません。ヒアドキュメントにしましょう そうだったのですか、以後気をつけます。 ソースの見直しありがとうございます。 AAAもしくはBBBで送信した場合、チェックされて表示はされているのですが テキストボックスが初期の二つ出る状態になっていまいます。 こちらも継続してAAAならAAAのテキストボックスのみ表示 とするのはやはり難しいでしょうか。