• ベストアンサー

ラジオボタンによる内容の振り分け

お世話になります。 他の方が作ったファイルを修正しないといけなくなり、本当に悩んでます…。お願いします。教えてください。 ラジオボタンによるフォームの振り分けをさせたいと思っています。 [HTMLファイル(fruit.html)] まずラジオボタンが以下のようになっています。 <input name="種類" type="radio" value="アップル" onclick="jobShow('apple');jobHide('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item1" checked="checked" />アップル <input name="種類" type="radio" value="バナナ" onclick="jobHide('apple');jobShow('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item2" />バナナ <input name="種類" type="radio" value="ピーチ" onclick="jobHide('apple');jobHide('banana');jobShow('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item3" />ピーチ <input name="種類" type="radio" value="ベリー" onclick="jobHide('apple');jobHide('banana');jobHide('peach');jobShow('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item4" />ベリー <input name="種類" type="radio" value="グレープ" onclick="jobHide('apple');jobHide('banana');jobHide('peach');jobHide('berry');jobShow('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item5" />グレープ <input name="種類" type="radio" value="レモン" onclick="jobHide('apple');jobHide('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobShow('lemon');jobHide('melon');jobHide('orange');" id="item6" />レモン <input name="種類" type="radio" value="メロン" onclick="jobHide('apple');jobHide('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobShow('melon');jobHide('orange');" id="item7" />メロン <input name="種類" type="radio" value="オレンジ" onclick="jobHide('apple');jobHide('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobShow('orange');" id="item8" />オレンジ そしてその下にそれぞれの項目のフォームがすべて並べてあります。 <h4>アップル</h4> <table width="576" border="0" cellspacing="1" cellpadding="0" class="common-table"> <tr> <th width="20%">商品名</th> <td><select name="商品名1" id="apple1"> <option value="">商品をお選びください</option> <option value="アップル1">アップル1</option> <option value="アップル2">アップル2</option> </select></td> </tr> <tr> <th>個数</th> <td><input name="個数1" type="text" size="5" id="apple2" />個</td> </tr> </table> </div> <div id="banana"> <h4>バナナ</h4> <table width="576" border="0" cellspacing="1" cellpadding="0" class="common-table"> <tr> <th width="20%">商品名</th> <td><select name="商品名1" id="banana1"> <option value="">商品をお選びください</option> <option value="バナナ1">バナナ1</option> </select></td> </tr> <tr> <th>個数</th> <td><input name="個数1" type="text" size="5" id="banana2" />個</td> </tr> </table> ・・・(オレンジまで続く) [javascriptファイル] window.onload=check; function check() { if(document.estimate.item1.checked) { jobShow('apple'); jobHide('banana'); jobHide('peach'); jobHide('berry'); jobHide('grape'); jobHide('lemon'); jobHide('melon'); jobHide('orange'); } if(document.estimate.item2.checked) { jobHide('apple'); jobShow('banana'); jobHide('peach'); jobHide('berry'); jobHide('grape'); jobHide('lemon'); jobHide('melon'); jobHide('orange'); } ・・・(item8まで続く) } こんな感じです。説明不足なのかもしれませんが、文字制限があるので全部かけそうにありません>< もしこの説明で分かる方いらっしゃいましたら、教えてください。 宜しくお願いします。

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

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

整理したほうがいいですね・・・ こんなかんじでどうですか? <script> window.onload=check; function check(){ var f=document.getElementById("estimate"); for(var i=0;i<f.length;i++){ if(f[i].name=="種類"){ jobSHOW(f[i].id,f[i].checked); if(!f[i].onclick) f[i].onclick=check; } } } function jobSHOW(id,flg){ var divs={item1:"apple",item2:"banana",item3:"peach",item4:"berry",item5:"grape",item6:"lemon",item7:"meron",item8:"orange"}; if(document.getElementById(divs[id])) document.getElementById(divs[id]).style.display=flg?"block":"none"; } </script> <form id="estimate"> <input name="種類" type="radio" value="アップル" id="item1" checked /><label for="item1">アップル</label> <input name="種類" type="radio" value="バナナ" id="item2" /><label for="item2">バナナ</label> <input name="種類" type="radio" value="ピーチ" id="item3" /><label for="item3">ピーチ</label> <input name="種類" type="radio" value="ベリー" id="item4" /><label for="item4">ベリー</label> <input name="種類" type="radio" value="グレープ" id="item5" /><label for="item5">グレープ</label> <input name="種類" type="radio" value="レモン" id="item6" /><label for="item6">レモン</label> <input name="種類" type="radio" value="メロン" id="item7" /><label for="item7">メロン</label> <input name="種類" type="radio" value="オレンジ" id="item8" /><label for="item8">オレンジ</label> <div id="apple"> <h4>アップル</h4> </div> <div id="banana"> <h4>バナナ</h4> </div> <div id="peach"> <h4>ピーチ</h4> </div> <div id="berry"> <h4>ベリー</h4> </div> <div id="grape"> <h4>グレープ</h4> </div> <div id="lemon"> <h4>レモン</h4> </div> <div id="meron"> <h4>メロン</h4> </div> <div id="orange"> <h4>オレンジ</h4> </div> </form>

MoMoCo27
質問者

お礼

ご回答ありがとうございます。 こんなにスマートなタグで実現できるとは・・・。 ありがとうございまいした。 もっと勉強します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ とてもまともに動いていた物とは思われません。 ・ ほとんど役に立たないかも知れませんが 以下のコードを参考にしてみてください。 ------------------------------------------------------------ <script language="JavaScript" type="text/javascript"> function check() { if (document.estimate.item1.checked) { jobShow("apple"); jobHide("banana"); jobHide("peach"); } if (document.estimate.item2.checked) { jobHide("apple"); jobShow("banana"); jobHide("peach"); } if (document.estimate.item3.checked) { jobHide("apple"); jobHide("banana"); jobShow("peach"); } } function jobShow(s) { if (document.getElementById(s)) document.getElementById(s).style.display='block'; } function jobHide(s) { if (document.getElementById(s)) document.getElementById(s).style.display='none'; } </script> <body onload="check()"> <form id="estimate" name="estimate"> <input name="種類" type="radio" value="アップル" onclick="jobShow('apple');jobHide('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item1" checked="checked" /> アップル <input name="種類" type="radio" value="バナナ" onclick="jobHide('apple');jobShow('banana');jobHide('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item2" /> バナナ <input name="種類" type="radio" value="ピーチ" onclick="jobHide('apple');jobHide('banana');jobShow('peach');jobHide('berry');jobHide('grape');jobHide('lemon');jobHide('melon');jobHide('orange');" id="item3" /> ピーチ </form> そしてその下にそれぞれの項目のフォームがすべて並べてあります。 <div id="apple"> <h4> アップル </h4> <table width="576" border="0" cellspacing="1" cellpadding="0" class="common-table"> <tr> <th width="20%"> 商品名 </th> <td> <select name="商品名1" id="apple1"> <option value=""> 商品をお選びください </option> <option value="アップル1"> アップル1 </option> <option value="アップル2"> アップル2 </option> </select> </td> </tr> <tr> <th> 個数 </th> <td> <input name="個数1" type="text" size="5" id="apple2" /> 個 </td> </tr> </table> </div> <div id="banana"> <h4> バナナ </h4> <table width="576" border="0" cellspacing="1" cellpadding="0" class="common-table"> <tr> <th width="20%"> 商品名 </th> <td> <select name="商品名1" id="banana1"> <option value=""> 商品をお選びください </option> <option value="バナナ1"> バナナ1 </option> </select> </td> </tr> <tr> <th> 個数 </th> <td> <input name="個数1" type="text" size="5" id="banana2" /> 個 </td> </tr> </table> </div> <div id="peach"> <h4> ピーチ </h4> <table width="576" border="0" cellspacing="1" cellpadding="0" class="common-table"> <tr> <th width="20%"> 商品名 </th> <td> <select name="商品名1" id="peach1"> <option value=""> 商品をお選びください </option> <option value="ピーチ1"> ピーチ1 </option> <option value="ピーチ2"> ピーチ2 </option> </select> </td> </tr> <tr> <th> 個数 </th> <td> <input name="個数1" type="text" size="5" id="peach2" /> 個 </td> </tr> </table> </div> </body>

MoMoCo27
質問者

お礼

ご回答ありがとうございます。 いろいろとやり方があるのですね。 まだまだ勉強不足なので、参考にさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ラジオボタンについて

    こんにちは。ラジオボタンについて質問させてください。 <input type="radio" name="area" value="all" onClick="area.value = 'all'" checked>ALL<br> <input type="radio" name="area" value="a" onClick="area.value = 'a'">A<br> <input type="radio" name="area" value="b" onClick="area.value = 'b'">B<br> というHTMLを記述しました。 画面が表示された後にラジオボタンをチェックして実行(別個作成)すると うまく動作するのですが、チェックボタンをチェックしずに (デフォルトの'ALL'選択のまま)実行するとうまくいきません。 どのようにすればうまく動作するのでしょうか?

    • ベストアンサー
    • HTML
  • 5問択2のラジオボタンは作れますか。

    5問のうち2つ選択するラジオボタンを作る方法はあるのでしょうか。 JavaScript自体は意識して勉強したことがないのですが、 以下のような構文しか思いつきません。 <input type="radio" name="question1" value="1">いちご <input type="radio" name="question1" value="2">オレンジ <input type="radio" name="question1" value="3">桃 <input type="radio" name="question1" value="4">バナナ <input type="radio" name="question1" value="5">パナップル 出来る方法などご存知の方おられましたら幸いです。

  • ラジオボタンとテキストを同時にグレーアウトさせる

    <input type=radio name="1" value = 'A1'">A1<br> <input type=radio name="1" value = 'A2'">A2<br> <input type=radio name="1" value = 'A3'">A3<br> <input type=radio name="1" value = 'A4'">A4<br> <input type=radio name="1" value = 'A5'">A5<br> <form> <input type=radio name="tex" onClick="textform.textin.value = 'B1'">B1<br> <input type=radio name="tex" onClick="textform.textin.value = 'B2'">B2<br> <input type=radio name="tex" onClick="textform.textin.value = 'B3'">B3<br> <input type=radio name="tex" onClick="textform.textin.value = 'B4'">B4<br> <input type=radio name="tex" onClick="textform.textin.value = 'B5'">B5<br> </form> <form id="textform" action="#"> ここに文字が表示されます <input id="textin" type="text" size="30"> </form> A1を選択した場合、B2とB4とテキストエリアをグレーアウトさせる A2を選択した場合、B3とテキストエリアをグレーアウトさせる この記述の方法がわかりません。 初心者ですので、どなたかご教授おねがいします。

  • 複数のラジオボタンのチェック

    複数のラジオボタンが全て選択されているかどうかのチェックのJavaScriptをすっきりした形で書くのは、どうしたらいいでしょうか? 下記のようですと、ダラダラと記述するようになってしまいます。 どなたかご教授ください。 --------------------------------------- <script type="text/javascript"> function insert_onClick() { j=0; for (i=0 ;i < document.F1.a11.length ; i++){ if (document.F1.a11[i].checked) { j=1; } } } </script> <form action="check.php" name="F1" onsubmit="return insert_onClick()"> 各valueは0~4まであります <input type="radio" name="a11" value="0"> <input type="radio" name="a12" value="0"> <input type="radio" name="a21" value="0"> <input type="radio" name="a22" value="0"> <input type="radio" name="b11" value="0"> <input type="radio" name="b12" value="0"> <input type="radio" name="b21" value="0"> <input type="radio" name="b22" value="0"> ---------------------------------------

  • ラジオボタンの値

    プログラミング初心者です。ラジオボタンの値を数値として取得して、それを計算に活かしたいのですが、、、うまくいきません。radioChange()で数値を取得したのですが、calcでその変数を使うには以下でおかしいでしょうか? よろしくおねがいしますm(__)m <html> <body onload="radioChange()"> <SCRIPT LANGUAGE="JavaScript"> function radioChange(num) { xx = num.value; xx = parseInt(xx); } function calc() { radioChange(); document.write(xx * 100); } </SCRIPT> <form name="form1"> <input type="radio" name="radio1" value="1" onclick="radioChange(this)"> <input type="radio" name="radio1" value="2" onclick="radioChange(this)"> <input type="radio" name="radio1" value="3" onclick="radioChange(this)"> </form> </body> </html>

  • jsでラジオボタンによって表示内容を変えたい

    とても困っているのでお力をお貸しください。 HTML側に ==================================================== <table summary="条件問題"> <tr> <th>問題1</th> <td> <ul> <li><input type="radio" name="AAAAAA" value="あああ" id="a1" onclick="mondaiChange1();"/> <label for="a1"> あああ</label></li> <li><input type="radio" name="AAAAAA" value="いいい" id="a2" onclick="mondaiChange1();"/> <label for="a2"> いいい</label></li> <li><input type="radio" name="AAAAAA" value="ううう" id="a3" onclick="mondaiChange1();"/> <label for="a3"> ううう</label></li> <li><input type="radio" name="AAAAAA" value="えええ" id="a4" onclick="mondaiChange1();"/> <label for="a4"> えええ</label></li> <li><input type="radio" name="AAAAAA" value="おおお" id="a5" onclick="mondaiChange1();"/> <label for="a5"> おおお</label></li> </ul> </td> </tr> </table> <div class="TableA"> <table summary="問題その2" id="TableA"> <tr> <th>Q1</th> <td> <ul> <li> <input type="radio" value="はい" id="b1" name="BBBBBBB" /> <label for="b1"> はい</label> </li> <li> <input type="radio" value="いいえ" id="b2" name="BBBBBBB" /> <label for="b2"> いいえ</label> </li> </ul></td> </tr> </table> <div class="TableB"> <table summary="問題その2" id="TableB"> <tr> <th>Q1</th> <td> <ul> <li> <input type="radio" value="はい" id="b1" name="BBBBBBB" /> <label for="b1"> はい</label> </li> <li> <input type="radio" value="いいえ" id="b2" name="BBBBBBB" /> <label for="b2"> いいえ</label> </li> </ul></td> </tr> </table> ========================== と記載。 includeしているjsファイル側に ========================== function mondaiChange1(){ radio = document.getElementsByName('AAAAAA') if(radio["a1"].checked) { //フォーム document.getElementById("TableA").style.display = "none"; document.getElementById("TableB").style.display = ""; } else if(radio["a2"].checked) { //フォーム document.getElementById("TableA").style.display = ""; document.getElementById("TableB").style.display = "none"; } else if(radio["a3"].checked) { //フォーム document.getElementById("TableA").style.display = "none"; document.getElementById("TableB").style.display = ""; } else if(radio["a4"].checked) { //フォーム document.getElementById("TableA").style.display = ""; document.getElementById("TableB").style.display = "none"; } else if(radio["a5"].checked) { //フォーム document.getElementById("TableA").style.display = "none"; document.getElementById("TableB").style.display = ""; } //オンロードさせ、リロード時に選択を保持 window.onload = mondaiChange1; } ========================== としているのですが、これだと最初にアクセスしたとき 問題その2のTableAとTableB両方のテーブルが表示されてしまいます。 (その後ラジオボタンを選択すると希望通りの動作になります。) //オンロードさせ、リロード時に選択を保持 window.onload = mondaiChange1; を入れたら大丈夫というのをネットで見たのですが、どう書き換えてもうまくいきません。 希望としては 最初にアクセスしたときは問題1の回答は何も選択されてない状態で、その下には何も表示されていない。 ↓ 問題1の選択肢を選択した時点で初めて「問題その2」のテーブルが選択したラジオボタンによってどちらかひとつ表示される、という風にしたいのですが、教えていただけないでしょうか?

  • ラジオボタンについて

    ラジオボタンのnameにそれぞれ違う名前をつけても 選択の制限を1つだけにできるやり方はありませんか? 例 <input type="hidden" name="a1" value="0151" /> <input name="a" type="radio" value="1" /> <input type="hidden" name="b1" value="0152" /> <input name="b" type="radio" value="1" /> <input type="hidden" name="c1" value="0153" /> <input name="c" type="radio" value="1" /> 私がやりたいことはあるプログラムシステムで使用するため ラジオボタンの上にhiddenでそれぞれ指定してるため このような形で表示できないかと、おもっています。

    • ベストアンサー
    • HTML
  • ラジオボタンの選択に応じてインプットを表示する。

     お世話になります。  現在、ラジオボタンの選択に応じてインプットのフィールドが表示されるようなHTMLフォームを作っているのですが、煮詰まってしまいました。どうしてもうまくいかないのですが、 <html> <head> <title>テスト</title> <script type="text/javascript"> <!-- function checkradio( disp ) { document.getElementById('input').style.display = disp; } //--> </script> </head> <body> <form action="xxx"> <p> <input type="radio" name="domain" id="1" value="1" onclick="checkradio('none');" /> <label for="1">選択1</label><br /> <input type="radio" name="domain" id="2" value="2" onclick="checkradio('none');" /> <label for="2">選択2</label><br /> <input type="radio" name="domain" id="3" value="3" onclick="checkradio('block');" checked /> <label for="3">選択3</label><br /> </p> <p id="input"> 選択3の詳細を書いてください。:<input type="text" id="input" name="select3" value="" size="20" /> </p> </form> </body> </html> と、こんな感じで、3を選択した時しかインプットを表示できません。選択1や選択2を表示した時には、「選択1の詳細を書いてください。」または「選択2の詳細を書いてください。」と表示させたいのですが、どこをどんな風に直せばいいでしょうか? それと同時に初期画面ではこのインプットを非表示にしてラジオボタンを選択した時に表示されるようにしたいと思っています。 よろしくお願いします。

  • ラジオボタンを選択すると、他のラジオボタンの動きを制御したい

    radio1~radio3のいずれか「はい」を選択すると、 その他が強制的に「いいえ」に切り替わるスクリプトはどのように作成すればよろしいでしょうか? <INPUT TYPE=radio NAME="radio1" VALUE="1">はい <INPUT TYPE=radio NAME="radio1" VALUE="2">いいえ <INPUT TYPE=radio NAME="radio2" VALUE="1">はい <INPUT TYPE=radio NAME="radio2" VALUE="2">いいえ <INPUT TYPE=radio NAME="radio3" VALUE="1">はい <INPUT TYPE=radio NAME="radio3" VALUE="2">いいえ

  • ラジオボタンを必須にしたい

    Javascript初心者です。 <input id="in-category-1" type="radio" name="category[]" value="1"> <input id="in-category-2" type="radio" name="category[]" value="2"> <input id="in-category-3" type="radio" name="category[]" value="3"> ~ <input id="in-category-11" type="radio" name="category[]" value="11"> <input id="publish" class="button-primary" type="submit" accesskey="p" tabindex="5" value="公開" name="publish"> 現在ある投稿フォームを作成しているのですが 上記HTMLのラジオボタン(1~11)がチェックをされないと 送信ボタンを押した際に「カテゴリ~を選んでください」と表示されるようにしたいです。 ページを読み込んだ時点ではどのラジオボタンにもチェックは入っていません。 この場合Javascriptによる処理をしたいのですが どの様に記述をすればよろしいでしょうか? クリックを押した際にIf文で判定するという書き方をすれば良いのでしょうか? 大変あつかましいお願いですがもしよろしければ サンプルコードなどを見せてください。

このQ&Aのポイント
  • 製品名【DCP-L2550D】の付属アプリをインストールすると起動ごとに更新通知が表示される問題が発生しています。スタートアップで無効にしても解消されず、起動ごとに更新通知が続いています。この問題の解決方法を教えてください。
  • 質問者は、製品名【DCP-L2550D】の付属アプリをインストールした後、起動ごとに更新通知が表示されるトラブルに遭遇しています。スタートアップで無効にしても消えず、更新通知が続く状況です。この問題に対する解決方法をお知らせください。
  • 【DCP-L2550D】という製品に付属のアプリをインストールすると、起動ごとに更新通知が表示されるという問題に直面しました。スタートアップで無効にしても消えないため、起動のたびに更新通知が表示される状態が続いています。この問題を解決する方法を教えてください。
回答を見る

専門家に質問してみよう