実現したいこと
selectboxのchangeイベントで項目を変更したい
前提
ruby on rails5.2 / jQueryでセレクトボックスの連動を実装中です。
よくある、親が選択されたら子が変わる都道府県セレクトボックスのようなものです。
親のセレクトボックスは、記載のコードで動いてますが、
子のセレクトボックスが、chengeイベント内に入ってきません。
発生している問題・エラーメッセージ
consoleにエラーなどは出ていません。
該当のソースコード
javascript
1let defaultOrganizationSelect = '<select name="listing_smart_lock[smart_lock_organization]" id="template__select"><option value>選択してください</option></select>'; 2let defaultDoorSelect = '<select name="listing_smart_lock[smart_lock_door]" id="template__select2"><option value>選択してください</option></select>'; 3 4$(document).on('change', '#listing_smart_lock__smart_lock_provider__select', function() { 5 let providerId = $('#listing_smart_lock__smart_lock_provider__select').val(); 6 if (providerId !== "") { 7 let selectedTemplate = $(`#listing_smart_lock__template__org__select${providerId}`); 8 $('#listing_smart_lock__smart_lock_organization__div').empty(); 9 $('#listing_smart_lock__smart_lock_organization__div').prepend(selectedTemplate.html()); 10 }else { 11 $('#listing_smart_lock__smart_lock_organization__div').empty(); 12 $('#listing_smart_lock__smart_lock_organization__div').prepend(defaultOrganizationSelect); 13 }; 14}); 15 16$(document).on('change', '#listing_smart_lock__smart_lock_organization__select', function() { 17 alert("これが呼ばれない"); 18 let organizationId = $('#listing_smart_lock__smart_lock_organization__select').val(); 19 console.debug(organizationId); 20 if (organizationId !== "") { 21 let selectedTemplate = $(`#listing_smart_lock__template__door__select${organizationId}`); 22 $('#listing_smart_lock__smart_lock_door__div').empty(); 23 $('#listing_smart_lock__smart_lock_door__div').prepend(selectedTemplate.html()); 24 }else { 25 $('#listing_smart_lock__smart_lock_door__div').empty(); 26 $('#listing_smart_lock__smart_lock_door__div').prepend(defaultDoorSelect); 27 }; 28});
html
1<label for="listing_smart_lock_smart_lock_provider_id">メーカー</label> 2<select id="listing_smart_lock__smart_lock_provider__select" name="listing_smart_lock[smart_lock_provider_id]"><option value="">選択してください</option> 3<option value="1">ほげ</option></select> 4<p></p> 5<label for="listing_smart_lock_smart_lock_organization_id">事業所</label> 6<div id='listing_smart_lock__smart_lock_organization__div'> 7<select id="listing_smart_lock__smart_lock_organization__select" class="" name="listing_smart_lock[smart_lock_organization_id]"><option value="">選択してください</option> 8</select> 9</div>
試したこと
試しに、子のセレクトボックスをclickにすると反応しました(alertが呼ばれました)。
ということは、
id = listing_smart_lock__smart_lock_organization__select
は認識できてそうです。
なぜchangeイベントが反応しないのでしょう?
javascript
1$(document).on('click'```
他にjsファイルを2つに分けてみましたが同じでした。
どうすればchangeイベントが取れるでしょうか?
回答1件
あなたの回答
tips
プレビュー