セレクトボックスの値やオプションなどを変更後、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>
コメント