セレクトボックスの値やオプションなどを変更後、Bootstrap の selectpicker で作られた div タグにも反映するには selectpicker('refresh') を使う。
オプションを差し替える例
<select name="type"> <option value="1">1</option> <option value="10">10</option> <option value="20">20</option> </select> <select name="number"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> ...省略... <option value="30">30</option> </select> <script> $(function() { // typeが変更された際に、numberオプションを差し替える $('[name="type"]').on('change', function(){ // keyがtype、valueがnumberの最小値 let number_min = {1:1, 10:10, 20:20}; let type = $('[name="type"] option:selected').val(); let number = $('[name="number"] option:selected').val(); if (number_min[type] == null) { return; } // numberのオプションを削除 $('[name="number"] > option').remove(); // セレクトボックスにオプションを追加 for(let i=number_min[type]; i<=30; i++) { $('[name="number"]').append($('<option>').html(i).val(i)); } // 元々選択済みだったオプションを選択し直す $('[name="number"] option[value="' + number + '"]').prop('selected',true); // Bootstrapの要素(divタグ)にも反映 $('[name="number"]').selectpicker('refresh'); }); }); </script>
コメント