前提・実現したいこと
jQueryにてプルダウン連動を行っています。
項目数が複数になった場合に1個ずつ設定すれば動くのですが、一つにまとめる事が出来ません。
ソースが長くなるため、一つにまとめたうえで対象プルダウンが連動するようにしたいです。
初心者の初質問となり、足りない部分もあるかと思いますが宜しくお願い致します。
該当のソースコード
VBScript
1parent_Combo= "<OPTION value='' class='msg'>------</OPTION>"'都道府県 2children_Combo= "<OPTION value='' class='msg'>------</OPTION>"'市区町村 3'データベースより名称とコードを読込み、Loopにて順番にComboへ流していく。 4'△△が都道府県コード・〇〇が市区町村コード・都道府県名及び市区町村名はコードに紐付く名称データを表示。 5Do While 6 parent_Combo = parent_Combo & "<OPTION value='△△'>"都道府県名"</OPTION>" 7 children_Combo= children_Combo& "<OPTION value='〇〇' data-val='△△'>"市区町村名"</OPTION>" 8Loop
HTML
1<TABLE class="tbl" id="tbl_count1"> 2<TR> 3 <TH>【1】推薦都道府県/推薦市町村</TH> 4 <TD> 5 <!--VBScriptにて取得のCombo利用--> 6 <SELECT class="parent" ID='S_parent1' name="S_parent1"><%=parent_Combo%></SELECT> 7 <SELECT class="children" ID='S_children1' name="S_children1"><%=children_Combo%></SELECT> 8 <INPUT class="S_Name" TYPE=TEXT ID="S_Name1" NAME="S_Name1" VALUE=""> 9 </TD> 10</TR> 11<TR> 12 <TH>【1】自薦都道府県/自薦市町村</TH> 13 <TD> 14 <SELECT class="parent" ID='J_parent1' name="J_parent1"><%=parent_Combo%></SELECT> 15 <SELECT class="children" ID='J_children1' name="J_children1"><%=children_Combo%></SELECT> 16 <INPUT class="J_Name" TYPE=TEXT ID="J_Name1" NAME="J_Name1" VALUE=""> 17 </TD> 18</TR> 19</TABLE> 20 21<TABLE class="tbl" id="tbl_count2"> 22<TR> 23 <TH>【2】推薦都道府県/推薦市町村</TH> 24 <TD> 25 <SELECT class="parent" ID='S_parent2' name="S_parent2"><%=parent_Combo%></SELECT> 26 <SELECT class="children" ID='S_children2' name="S_children2"><%=children_Combo%></SELECT> 27 <INPUT class="S_Name" TYPE=TEXT ID="S_Name2" NAME="S_Name2" VALUE=""> 28 </TD> 29</TR> 30<TR> 31 <TH>【2】自薦都道府県/自薦市町村</TH> 32 <TD> 33 <SELECT class="parent" ID='J_parent2' name="J_parent2"><%=parent_Combo%></SELECT> 34 <SELECT class="children" ID='J_children2' name="J_children2"><%=children_Combo%></SELECT> 35 <INPUT class="J_Name" TYPE=TEXT ID="J_Name2" NAME="J_Name2" VALUE=""> 36 </TD> 37</TR> 38</TABLE> 39・ 40・ 41・ 42このまま上記TABLEが20個ほど続きます(For Loopにて) 43
jQuery
1//連動 2$(function() { 3 var $children = $('.children'); 4 var original = $children.html(); 5 6 $('.parent').change(function() { 7 var val1 = $(this).val(); 8 $children.html(original).find('option').each(function() { 9 var val2 = $(this).data('val'); 10 if (val1 != val2) { 11 $(this).not('optgroup,.msg').remove(); 12 } 13 }); 14 }); 15}); 16 17//推薦市区町村名を出力 18$(function() { 19 $('.children').change(function() { 20 var selected = $('.children option:selected').text(); 21 $('.S_Name').val(selected); 22 }); 23}); 24 25//自薦市区町村名を出力 26$(function() { 27 $('.children').change(function() { 28 var selected = $('.children option:selected').text(); 29 $('.J_Name').val(selected); 30 }); 31});
試したこと
本サイトにて既出の質問などを参考に件数分Loopを回すなど試しましたが、
全く動かなくなるか、動いても全ての項目で連動されてしまいます。
まずは勉強と思い数時間ほど調べながら格闘してきましたが、力及ばず。。。
独学の初心者ということもあり、気になる点は多くあるかと思いますが、お力添えお願い致します。
補足
ソースが汚く分かり難いかもしれませんが、
プルダウン「都道府県」を選択した際に「市区町村」の選択しをdata-valが一致する内容のみに切り替えるという内容です。
上記の動きを【推薦都道府県/推薦市区町村】【自薦都道府県/自薦市区町村】の2項目を1セットとして、20回ForLoopにて回しております。
1個目の都道府県を選択しても、n個目の都道府県を選択しても、全ての市区町村が置き換わってしまうため、
1個目ならば1個目を、n個目ならばn個目の市区町村切り替えとさせたいです。
回答1件
あなたの回答
tips
プレビュー