セレクトボックスの連動処理について

このQ&Aのポイント
  • PHPを使用して、複数のセレクトボックスを連動させる方法について質問があります。
  • 以下のURLを参考にセレクトボックスの連動処理を実行していますが、2つ目のセレクトボックスの選択や表示がされません。
  • JavaScriptのスクリプト部分を複数のセレクトボックスに適用する方法を教えてください。
回答を見る
  • ベストアンサー

セレクトボックスの連動処理について

PHPに投稿すべき内容かもしれませんが、 こちらに投稿します。以下URLを参考にセレクトボックスの 連動処理を実行させています。 やりたい事は以下になります。 ・PHPにてフォーム(親-子のセレクトボックス)を記載し、 親-子を連動させる仕組を複数作成する為です。 http://www.skuare.net/test/jdependent.html こちらのページに記載されている内容で、一つの関連付けされている セレクトボックス(親-子-孫)については、連動処理する事が確認できましたが、 例えば以下のように関連付けされているセレクトボックスが2つある時に 2個目のセレクトボックスの選択や表示がされません。 <TABLE> <select name="id" id="id" class="selectable"> <option value="">-- select --</option> <option value="1" title="flowers" >Flowers</option> <option value="2" title="animals" >Animals</option> </select> <select name="id2" id="id2" class="selectable"> <option value="">-- select --</option> <option value="1" class="flowers" title="sunflower" >Sunflower</option> <option value="2" class="flowers" title="rose" >Rose</option> <option value="3" class="animals" title="dog" >Dog</option> <option value="4" class="animals" title="cat" >Cat</option> </select> </TABLE> <TABLE> <select name="id" id="id" class="selectable"> <option value="">-- select --</option> <option value="1" title="flowers" >Flowers</option> <option value="2" title="animals" >Animals</option> </select> <select name="id2" id="id2" class="selectable"> <option value="">-- select --</option> <option value="1" class="flowers" title="sunflower" >Sunflower</option> <option value="2" class="flowers" title="rose" >Rose</option> <option value="3" class="animals" title="dog" >Dog</option> <option value="4" class="animals" title="cat" >Cat</option> </select> </TABLE> おそらくスクリプト記載部分の $(document).ready(function(){ $('#id2').dependent({ parent:'id',//親のid名 group: 'selectable' }); }); #id2辺りを触る必要があるのだとは思うのですが、 同じ内容のセレクトボックスをPHPに複数記載した時に、 どのようにスクリプトを変更する必要があるかが解らず 非常に困っております。どなたか教えていただければ 幸いです。 ※JavaScriptはまだ触り始めの為、初心者です。

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

  • ベストアンサー
  • DoubtOwl
  • ベストアンサー率50% (63/124)
回答No.2

可変であるならIDは指定できると思います。 固有のオブジェクトを示すものなので被らないようにしましょう。 現状ですと親のIDを固定名で指定しているので全ての子セレクトボックスにイベントをバインドしても 親が同じになってしまいます。 HTMLは変更できるけどjQueryの書き方がわからないという話であれば 下記でできると思います。 $(document).ready(function(){ //セレクトボックスのうち、idが_childで終わるものを取得 var children = $('select[id$="_child"]'); //各小セレクトボックスにイベントをバインド for (var i = 0; i < children.length ; i++) { $(children[0]).dependent({ //idから_childを除き、親のidを指定する。 parent:children[0].id.replace('_child', ''),//親のid名 group: 'selectable' }); } <select name="id1" id="id1" class="selectable"> <option value="">-- select --</option> </select> <select name="id1_child" id="id1_child" class="selectable"> <option value="">-- select --</option> </select> <select name="id2" id="id2" class="selectable"> <option value="">-- select --</option> </select> <select name="id2_child" id="id2_child" class="selectable"> <option value="">-- select --</option> </select>

jra354
質問者

お礼

ご連絡遅れました。回答ありがとうございます。どうもjquery.dependent.js自体が複数行の連動に対応できていないようで、結局別スクリプトで実行する事にしましたが、上記回答は大変参考になりました。ありがとうございました。

その他の回答 (1)

回答No.1

URL先のサンプルみたいなのを2つ作りたい、的なことでしょうか? であれば <select id="sel1"></select> <select id="sel1_child1"></select> <select id="sel2"></select> <select id="sel2_child2"></select> のようにid属性は被らないようにきちんと設定し $(document).ready(function(){ $('#sel1_child1').dependent({ parent:'sel1', group: 'selectable' }); }); $(document).ready(function(){ $('#sel2_child2').dependent({ parent:'sel2', group: 'selectable' }); }); のようにJSも2つ書けばいいのではないでしょうか? 個人的にはJS初心者でJQueryから入るのはオススメしませんが・・・

jra354
質問者

補足

回答ありがとうございます。 やりたい事は、ほぼご指摘通りです。 ただ、2つと決まっている訳ではなく 可変なのです(と言っても最大で20個くらいですが) その為、JSやSELECTの記載もよく解らなくなっている のが現状です。 またおっしゃる通り素人がJQueryを触るべきではないと 私も思いますが、既存のコードがあり更にスケジュールが キツキツの為に使用しています。本来はJavaScriptが ガリガリ書けるようになってから使うべきと考えます。

関連するQ&A

  • 連動させたいセレクトボックスについて。

    こんにちは。DB+PHPが初心者のものです。 前にもここで質問させていただきましたが、 自分なりにコードを書いてみたので コードの訂正、ご教授をよろしくお願いいたします。 セレクトボックス1には、[table 1]の、種類が入り れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。 下記のようにソースを書いてみましたが、 table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T) 動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。 <html> <body> <select name="mkoumoku"> <option selected>-------------</option> <?php //DB接続 $dbcon=mysql_connect("localhost","abcd","defg"); //DB選択 mysql_select_db("zozozo"); //table1を取得 $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n"; } echo "</select>"; ?> <select name="skoumoku"> <option selected>-------------</option> <? //table1に連動して項目を変えたいところのコード $res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id"); while ($rows=mysql_fetch_array($res1)) { echo "<option value=\"".$rows['id']."\">".$rows['name']."\n"; } //Dbクローズ mysql_close($dbcon); ?> </body> </html>

    • ベストアンサー
    • PHP
  • セレクトボックスの操作について

    セレクトボックスの操作について 3つのセレクトボックスのうち、どれかを変更すると同じテキストのものに 残りの2つのセレクトボックスを変更したいと思っております。 同じテキストが無ければ<option value="">----------</option>をcheckedにしたいと 考えているのですが、どなたかご教授いただければと思います。 [変更したいhtml] <select name="house_kouzou_a" id="house_kouzou_a" class="a"> <option value="">----------</option> <option value="1">木造</option> <option value="2">鉄筋</option> </select> <select name="house_kouzou_b" id="house_kouzou_b" class="b"> <option value="">----------</option> <option value="1">木造</option> <option value="2">鉄筋</option> </select> <select name="house_kouzou_c" id="house_kouzou_c" class="c"> <option value="">----------</option> <option value="1">木造</option> <option value="3">鉄筋</option> <option value="4">その他</option> </select>

  • セレクトボックスの連動

    セレクトボックスAを切り替えると、他のセレクトボックスがAと同じになるようなものを作りたいのですが、うまくいきません。 ソースは以下の通りです。 function ChangeSelect() { var index = formA.selectA.selectedIndex; for (i=1,i<formB.selectCnt.value,i++) { if (i == index) { FormB.selectB1.options[index].value ); } } } <form name="formA"> <select name="selectA" onchange="javascript:ChangeSelect()"> <option value="りんご">りんご <option value="みかん">みかん <option value="いちご">いちご </select> </form> <form name="formB> <input type="hidden" name="selectCnt" value=***> <select name="selectB1"> <option value="りんご">りんご <option value="みかん">みかん <option value="いちご">いちご </select> </form> 存在するセレクトボックスは全て同じ値が入っています。 formAにはセレクトボックスは1つですが、formBにあるセレクトボックスは0~複数と場合によって異なります。 formBにあるセレクトボックスはselectB1、selectB2、selectB3という感じに最後の数字のみが異なるnameがつくようにしています。 <input type="hidden" name="selectCnt" value=***>のvalueには、ASPで数えたセレクトボックスの数を入れています(セレクトボックスが10個あれば10と入ります) 数が決まっていればFormB.selectB1.options[index].valueを数の分だけ増やせばいいのですが、0の時もあれば10の時もある、という場合にはどういう風に書けばいいのかわかりません。 どのように記述すれば良いのでしょうか。アドバイスお願いします><

  • 動的なセレクトボックスの生成と削除

    CGI(Perl)で、Javascriptを用いWEBアプリケーションを作成しています。 その過程で、追加ボタンを押すとセレクトボックス(5つでひとかたまりです)が増えるJavascriptを作成しています。 しかし、残念ながら削除をする機能をどうしていいか思いつきませんのでお知恵を貸してください。(また、増加ボタンも他にいい方があレバよろしくお願いします。) 今までに作成したのは以下のとおりです。 **********Javascript*********** var copy; function addInput() { copy = document.getElementById('plus') copy.innerHTML="Filter:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <select name='condition'> <option value='and'>AND</option> <option value='or'>OR</option> </select>&nbsp; <select onchange='SetSubMenu(value);'> <option value='Werkstoff'>1.Werkstoff</option> <option value='Shiftfaktor'>2.Shiftfaktor </option> <option value='SurfCorr'>3.SurfCorr</option> </select>&nbsp; <select name='condition'> <option value='like'>like</option> <option value='notlike'>not like</option> <option value='equal'>=</option> <option value='<'><</option> <option value='>'>></option> <option value='<='><=</option> <option value='>='>>=</option> </select>&nbsp; <div id ='Werkstoff' class='secondpulldown'> <select><TMPL_LOOP NAME=EINTRAGWERK> <option value='<TMPL_VAR NAME=WERKSTOFF>'><TMPL_VAR NAME=WERKSTOFF></option></TMPL_LOOP></select></div> <div id ='Getriebe' class='secondpulldown'> <select><TMPL_LOOP NAME=EINTRAGETRIEBE> <option value='<TMPL_VAR NAME=GETRIEBE>'><TMPL_VAR NAME=GETRIEBE></option></TMPL_LOOP></select></div> &nbsp; <input type='button' onclick='addInput()' value='+'>&nbsp; <input type='button' onclick='delInput()' value='-'> <div id='plus'></div>" } </script> **********stylesheet************* <style type="text/css"><!-- .secondpulldown { display: none; } --></style> <table> <tr> <td>Datenbank:</td> <td colspan="5"> <select name="datenbank"> <option value="bank1">DATEN BANK 1</option> </select> </td> </tr> <tr> <td>Filter:</td> <td> <select name="condition"> <option value="and">AND</option><option value="or">OR</option> </select> </td> <td> <select onchange="SetSubMenu(value);"> <option value="Werkstoff">1.Werkstoff</option> <option value="Shiftfaktor">2.Shiftfaktor </option> <option value="SurfCorr">3.SurfCorr</option> </select> </td> <td> <select name="condition"> <option value="like">like</option> <option value="notlike">not like</option> <option value="equal">=</option> <option value="<"><</option> <option value=">">></option> <option value="<="><=</option> <option value=">=">>=</option> </select> </td> <td> <div id ="Werkstoff" class="secondpulldown"> <select> <TMPL_LOOP NAME=EINTRAGWERK><option value="<TMPL_VAR NAME=WERKSTOFF>"><TMPL_VAR NAME=WERKSTOFF></option></TMPL_LOOP> </select> </div> <div id ="Getriebe" class="secondpulldown"> <select> <TMPL_LOOP NAME=EINTRAGETRIEBE><option value="<TMPL_VAR NAME=GETRIEBE>"><TMPL_VAR NAME=GETRIEBE></option></TMPL_LOOP> </select> </div> </td> <td> <input type="button" onclick="addInput()" value="+"> <input type="button" onclick="delInput()" value="-"> </td> </tr> <tr> <td colspan='6'><div id="plus"></div></td> </tr> </table> よろしくお願いします。

  • 【PHP】メールフォームの連動するセレクトボックス

    メールフォームを作っているのですが、 連動するセレクトボックスにおいて、 自動返信メールに内容が思った様に記載されません。 複数のチェックボックがあり、それぞれに連動して、 セレクトボックス1でサイズを選び、セレクトボックス2で数を選ぶようになっています。 ソースは最後に記載しますが、希望する返信メールの形は以下の通りです。 ーーーーーー現在ーーーーーー 【色 / サイズ / 数量】 S 1個 L 2個 S 3個 【料金】 (表示なし) ーーーーーー希望ーーーーーー 【色 / サイズ / 数量】 レッド S 1個 ブルー L 2個 イエロー S 3個 【料金】 S × 4個:600円 =1,800円 L × 2個:900円 =1,800円 ご教示のほど、お願い致します。 以下、ソースです。 <dt>色</dt> <dd> <label class="color"><input type="checkbox" name="color[]" id="color_01" value="レッド">レッド</label> </dd> <dd> <select class="parent" name="size_01"> <option value="" class="msg" selected>サイズを選択</option> <option value="S">S:600円</option> <option value="L">L:900円</option> </select> </dd> <dd> <select class="children" name="number_01"> <option value="0" class="msg" selected>0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select><br> </dd> <dd> <label class="color"><input type="checkbox" name="color[]" id="color_01" value="ブルー">ブルー</label> </dd> <dd> <select class="parent" name="size_02"> <option value="" class="msg" selected>サイズを選択</option> <option value="S">S:600円</option> <option value="L">L:900円</option> </select> </dd> <dd> <select class="children" name="number_02"> <option value="0" class="msg" selected>0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select><br> </dd> <以下、他の色が同様に続きます> <dt>料金</dt> <dd class="required"> <div id="result"> S:合計<span class="s maisu" name="sum_s_n" value="0">0</span>個 × 600円 = <span class="s kingaku" name="sum_s_p" value="">0</span>円<br> L:合計<span class="a maisu" name="sum_a_n">0</span>個 × 900円 = <span class="all kingaku" name="sum_all">0</span>

    • ベストアンサー
    • PHP
  • セレクトボックスを使ったJavaScriptでの計算方法

    セレクトボックスから名前を選択して計算する方法を教えてください。 HTMLとJavaScriptは別に分けます。 ----------.html---------- <table border="1"> <tr><td>武器</td> <td><form name="myForm"> <select name="Item" size="1" tabindex="0"> <option value="0">あああああ</option> <option value="1">いいいいい</option> <option value="2">ううううう</option>      ・      ・      ・      ・      ・ </select> </td></tr> <tr><td>OP1</td> <td> <select name="OP1" size="1" tabindex="0"> <option value="0">AAAAA</option> <option value="1">BBBBB</option> <option value="2">CCCCC</option>      ・      ・      ・      ・      ・ </select> </td></tr> <tr><td>OP2</td> <td> <select name="OP2" size="1" tabindex="0"> <option value="0">aaaaa</option> <option value="0">bbbbb</option> <option value="0">ccccc</option>      ・      ・      ・      ・      ・ </select> </td></tr> <tr><td>OP2</td> <td> <select name="OP2" size="1" tabindex="0"> <option value="0">aaaaa</option> <option value="0">bbbbb</option> <option value="0">ccccc</option>      ・      ・      ・      ・      ・ </select> </td></tr> <tr><td colspan="2" align="center"> <input type="button" value="計算する" onclick="Calculation()"> <input type="reset" name="リセット" value="リセット"> </form> </td></tr> <tr><td colspan="2" align="center"> <form name="TxtArea"><input type="text" name="myResult" size="20"> </form> </td></tr> </table> .jsではItemをbox1、OP1をbox2、OP3をbox3、OP3をbox4としています。 box1[0]=10; box1[1]=15; といった感じです。 全部足し算で計算します。 どのようにすれば計算できるのかJavaScriptについて書かれてるページを見たのですが理解できなかったのでよろしくお願いします。

  • PHP セレクトフォームの連動

    初めての質問です。よろしくお願いします。 今、同一ページ内で二つのセレクトフォームを連動させてライブ写真の表示をさせようとしているのですが、上手くいきません。 内容は、まず1つ目のセレクトにライブ会場名を表示します。そのセレクトをクリックすると、連動してもう一つのセレクトに写真名のリストが表示されるようにします。 今困っているのは一つ目のセレクトをクリックし、二つ目のセレクトの連動はどうにかできたのですが、二つ目のセレクトをクリックすると一つ目のセレクトが初期状態に戻ってしまいます。 質問がヘタクソなので、ソースとURLを書いておきます。ソースが分かりにくいとは思いますがご了承ください。お分かりになる方は分かりやすく教えてください。よろしくお願いします。 URL http://www.officekuwa.com/soulsurvivores/ontheroad/gallery.php データーベースの内容です。 gallery_title(ライブ会場名が登録されたテーブル) id,title,date,active gallery (写真名が登録されたテーブル) id,cid,title,photos,date,active //一つ目のセレクト // ライブ会場名表示 $gallery_query = "select * from gallery_title where id =".$_POST['setID']."; $gallery_cat_data = mysql_query($gallery_query, $db); $gallery = mysql_fetch_assoc($gallery_cat_data); <FORM method="post" name="setForm" action="/soulsurvivores/ontheroad/gallery.php?ID=<?php echo _hs($gallery['id']); ?>"> <SELECT NAME="setID" CLASS="formPulldown" STYLE="width:175px" onChange="document.setForm.submit()"> <option value=''>Select a Photo Set</option> // 会場名表示 $gallery_query = "select * from gallery_title"; $gallery_cat_data = mysql_query($gallery_query, $db); while($gallery_cat = mysql_fetch_assoc($gallery_cat_data)) { $SELECTED = (($_POST['setID'] == $gallery_cat['id'])?" SELECTED":""); <option value="<?php echo _hs($gallery_cat['id']); ?>"<?php echo _hs($SELECTED);?>><?php echo $gallery_cat['title'];?></OPTION> </SELECT> </TD></FORM> <option value="<?php echo _hs($gallery_cat['id']); ?>"<?php echo _hs($SELECTED);?>><?php echo $gallery_cat['title'];?></OPTION> </SELECT> </TD></FORM> } //二つ目のセレクト // 写真タイトル名表示 if ($_SERVER["REQUEST_METHOD"] == "POST") { $gallery_query = "select * from gallery where cid =".$_POST['setID']."; $gallery_cat_data = mysql_query($gallery_query, $db); $gallery_cat = mysql_fetch_assoc($gallery_cat_data); ?> <FORM method="post" name="phoForm" action="/soulsurvivores/ontheroad/gallery.php?ID=<?php echo _hs($gallery_cat['id']);?>&setID=<?php echo _hs($gallery_cat['cid']);?>"> <SELECT NAME="ID" CLASS="formPulldown" STYLE="width:275;background-color:#FFFFFF" onChange="document.phoForm.submit()"> <option value=''>Select a Photo</option> <?php } } if ($_SERVER["REQUEST_METHOD"] == "POST") { $gallery_query = "select * from gallery where cid =".$_POST['setID']."; $gallery_disp_data = mysql_query($gallery_query, $db); while($gallery_disp = mysql_fetch_assoc($gallery_disp_data)) { $SELECTED = ((!isset($_POST['setID']) Or $_POST['setID'] == "none")?" SELECTED":""); ?> <OPTION VALUE="<?php echo _hs($gallery_disp['cid']);?>" <?php echo _hs($SELECTED); ?>><?php echo $gallery_disp['title'];?></OPTION> <?php } } ?> </SELECT> // 写真の表示 <?php if ($_SERVER["REQUEST_METHOD"]=="POST") { $SELECTED = "SELECTED"; if(!isset($_POST['ID'])) { print ""; } else { // 写真の表示 $gallery_query = "select * from gallery where cid =".$_POST['ID']."; $gallery_cat_data = mysql_query($gallery_query, $db); $gallery_cat = mysql_fetch_assoc($gallery_cat_data); ?> <img src="<?php echo _hs($gallery_cat['photos']); ?>" alt="" hspace="0" vspace="6" border="0"> <?php } } ?>

    • 締切済み
    • PHP
  • セレクトボックスを使った計算式

    テキストボックスに文字を入力してセレクトボックスで四則計算 をプルダウンメニューで選択し、3つ目のテキストボックスに 計算結果を表示するにはどのようにしたらよいのでしょうか? とりあえず途中まで作ってみました。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>スクリプト練習</title> <script type="text/javascript"> <!-- function keisan(){     if(option value="+"){     document.f1.t3.value(document.f1.t1.value + document.f1.t2.value); } } //--> </script> </head> <body> <form name="f1"> <input type="text" size="5" name="t1"> <select name="color2"> <option value="+">+</option> <option value="-">-</option> <option value="×">×</option> <option value="÷">÷</option> </select> <input type="text" size="5" name="t2"> <input type="button" value="=" onClick="keisan()"> <input type="text" size="5" name="t3"> </form> </body> </html> if文を作るところが特にわからず止まっています。 どうかよろしくお願いします。

  • セレクトボックスとテキストボックスの連動について

    セレクトボックスで質問事項を選ぶと、テキストボックスの中に選択した名称が表示される。ということをやりたく下記の様に設定しました。 <script> function hoge(obj){ var f=obj.form; var v=obj.options[obj.selectedIndex].value; var c=f.elements["comment"]; c.value+=v; obj.selectedIndex=0; } </script> <select name="質問事項1" onchange="hoge(this)"> <option value="selected">質問事項を選んでください</option> <option value=“質問1">質問1</option> <option value="質問2">質問2</option> <option value="質問3">質問3</option> </select> <textarea name="comment"></textarea> 現在発生している問題が1点あります。 セレクトボックスで質問を2回選ぶと、選んだ2つの結果がテキストボックス内に連続して表示されます。 例: 1回目 セレクトボックス内 「質問1」を選択 ↓ テキストボックス内 「質問1」が表示 2回目 セレクトボックス内 「質問2」を選択 ↓ テキストボックス内 「質問1質問2」と表示 2回目以降選んだ場合に前回の処理をクリアにして、1つのみ表示させたいと思うのですがどうやればいいのでしょうか。 よろしくお願いします。

  • セレクトボックス連動

    過去の質問にありましたソースを参考にセレクトボックスの 連動タイプをphpを絡めて作っています。 DBから取出した menua に入る値を初期値に設定したいのですが うまくいきません。 menua には AAA、BBB、CCCが入ります。 初期値を変えるにはどのようにすればいいのでしょうか。 また、menua以外にもmenubの初期値も変える事が出来るのでしょうか。 以下ソースになります。 <? $menua = "BBB"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <script type="text/javascript"> <!-- data = [ ["AAA", {key:"A01",value:101}, {key:"A02",value:102}, {key:"A03",value:103}], ["BBB", {key:"B01",value:201}, {key:"B02",value:202}, {key:"B03",value:203}], ["CCC", {key:"C01",value:301}, {key:"C02",value:302}, {key:"C03",value:303}] ]; // --> </script> <script type="text/javascript"> <!-- window.onload=function (){ for(var i=0; i<data.length; i++){ document.FORM1.menua.options[i] = new Option(data[i][0],data[i][0]); } setSubMenu(0); }; function setSubMenu(no){ document.FORM1.menub.length=0; for(var i=1; i<data[no].length; i++){ document.FORM1.menub.options[i-1] = new Option(data[no][i].key,data[no][i].value); } } // --> </script> </head> <body> <form name="FORM1"> <select name="menua" onchange="setSubMenu(this.selectedIndex)"> </select> <select name="menub" > </select> </form> </body> </html>

専門家に質問してみよう