##やりたいこと
プルダウン(エリア)とプルダウン(アトラクション)があります。
プルダウン(エリア)の選択肢によりプルダウン(アトラクション)の選択肢が自動的に決まるという機能にしているのですが、プルダウン(アトラクション)の初期状態がブランクになってしまっているため、「エリアを選択してください」という一文を初期表示したいです。
JS上にattractionElement.children().remove();
と入れてしまっているため、アトラクションがブランクになってしまっているのですが、
ここに一文を追加するコードがわからず、ご教示いただけますと幸いです。
##各種コード
必要と思う部分のみ記載しております。
情報に不足ありましたらご指摘いただけますと幸いです。
HTML
1<div> 2 <h2 class="ttl-bd mt-4 mb-4">投稿情報</h2> 3</div> 4 5<form method="post" enctype="multipart/form-data"> 6 {% csrf_token %} 7 <div class="formpost"> 8 <div>エリア<span>※必須</span></div> 9 <!--下記render_field{% 〜 %}はデータベースを参照するコードで再現性がなく、検証に向かないのでグレーアウトしました--> 10 <!--{% render_field form.area class="form-control" placeholder="選択してください" %}--> 11 <select name="area" class="form-control" id="id_area"> 12 <option value="選択肢A">選択肢A</option> 13 <option value="選択肢B">選択肢B</option> 14 </select> 15 </div> 16 <div class="formpost"> 17 <div>アトラクション<span>※必須</span></div> 18 <!--下記render_field{% 〜 %}はデータベースを参照するコードで再現性がなく、検証に向かないのでグレーアウトしました--> 19 <!--{% render_field form.attraction class="form-control" placeholder="選択してください" %}--> 20 <select name="attraction" class="form-control" id="id_attraction"> 21 <option value="選択肢a">選択肢a</option> 22 <option value="選択肢b">選択肢b</option> 23 <option value="選択肢c">選択肢c</option> 24 <option value="選択肢d">選択肢d</option> 25 </select> 26 </div> 27</form>
JavaScript
1<script> 2 const areaElement = $('#id_area'); 3 const attractionElement = $('#id_attraction'); 4 const area_attraction = { 5 '選択肢A': [ 6 { 7 'value': '選択肢a', 8 'name': '選択肢a' 9 }, 10 { 11 'value': '選択肢b', 12 'name': '選択肢b' 13 }, 14 ], 15 '選択肢B': [ 16 { 17 'value': '選択肢c', 18 'name': '選択肢c' 19 }, 20 { 21 'value': '選択肢d', 22 'name': '選択肢d' 23 }, 24 ], 25 }; 26 const changeArea = (select) => { 27 attractionElement.children().remove(); 28 const parentId = areaElement.val(); 29 const categoryList = area_attraction[parentId]; 30 for (const category of categoryList) { 31 const option = $('<option>'); 32 option.val(category['value']); 33 option.text(category['name']); 34 attractionElement.append(option); 35 } 36 if (select !== undefined) { 37 attractionElement.val(select); 38 } 39 }; 40 $('#id_area').on('change', () => { 41 changeArea(); 42 }); 43 if (areaElement.val()) { 44 const selectedCategory = attractionElement.val(); 45 changeArea(selectedCategory); 46 }
##開発環境
HTML5
Bootstrap 4.7.0
Django 2.2.16
jQuery 3.5.1
回答1件
あなたの回答
tips
プレビュー