1つ目のセレクトボックスで選んだ値に合わせて、2つ目のセレクトボックスに表示される選択肢が変わるセレクトボックスを下記の記事を参考に作りました。
https://try-m.co.jp/blog/web-create/936/
それを同じページに2つ設置したいので、1つ目のセレクトボックスを選択したときに、
選択をしたセレクトボックスの下にある2つ目のセレクトボックスのみと連動するように変更したいのですが、
セレクトボックス1の2つ目とセレクトボックス2の2つ目のoptionのテキストの値をそれぞれ取得して、どう
出し分けたらいいのか分からず困っています。
html
1<!-- 連動セレクトボックス1 --> 2<div class="selectDiv"> 3 <select class="parent" name="type"> 4 <option value="">洋服のタイプを選択</option> 5 <option value="タイプA">タイプA</option> 6 <option value="タイプB">タイプB</option> 7 </select> 8</div> 9<div class="selectDiv"> 10 <select class="childen" name="size"> 11 <option value="">サイズを選択</option> 12 <option value="M" data-val="タイプA">M</option> 13 <option value="L" data-val="タイプA">L</option> 14 <option value="子供用M" data-val="タイプB">子供用M</option> 15 <option value="子供用L" data-val="タイプB">子供用L</option> 16 </select> 17</div> 18 19<!-- 連動セレクトボックス2 --> 20<div class="selectDiv"> 21 <select class="parent" name="design"> 22 <option value="">バッグのデザインを選択</option> 23 <option value="デザインA">デザインA</option> 24 <option value="デザインB">デザインB</option> 25 </select> 26</div> 27<div class="selectDiv"> 28 <select class="childen" name="color"> 29 <option value="">色を選択</option> 30 <option value="赤" data-val="デザインA">赤</option> 31 <option value="青" data-val="デザインA">青</option> 32 <option value="緑" data-val="デザインB">緑</option> 33 <option value="黄" data-val="デザインB">黄</option> 34 </select> 35</div>
jQuery
1var children = $('.childen'); 2var original = children.html(); 3 4$('.parent').change(function() { 5 var thisChildren = $(this).parent().next().children(children); 6 var val1 = $(this).val(); 7 8 thisChildren.html(original).find('option').each(function() { 9 var val2 = $(this).data('val'); 10 11 if (val1 != val2) { 12 $(this).not(':first-child').remove(); 13 } 14 }); 15 16 if ($(this).val() == "") { 17 $thisChildren.attr('disabled', 'disabled'); 18 } else { 19 $thisChildren.removeAttr('disabled'); 20 } 21});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/12 05:50
2018/10/12 13:53