Jquery bootstrap selectpicker обновляет списки на основе предыдущего выбора списка
У меня есть три выпадающих списка, один список заполняется на загрузке страницы и не изменяется. Второй и третий списки могут меняться в зависимости от выбора. Эта функциональность работает нормально.
Я попытался добавить selectpicker Bootstrap к селекторам, и я вижу, что он работает - к сожалению, списки не обновляются на основе выбора. Я на самом деле думаю "за кулисами", так как я вижу, что запросы передаются, но через интерфейс ничего не происходит.
Часть HTML:
<!-- SelectPicker -->
<link href='//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.2/css/bootstrap-select.min.css' rel='stylesheet' type='text/css'>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
Первые два DDL создаются с помощью php, но
<select id='ddl_first_lookup' onchange='ajaxFirstOnChange(this.value)' value='' class='selectpicker'></option>
<select id='ddl_second_lookup' onchange='ajaxSecondOnChange(this.value)' class='selectpicker'>
<select id="ddl_third_lookup" onchange='ajaxThirdLookup(this.value)' class='selectpicker'></select>
У меня есть следующий Javascript:
$(document).ready(function() {
$(".selectpicker").selectpicker();
});
Это тот момент, когда я обнаружил проблему, я пытаюсь реализовать это в ajax для функций изменения без успеха - даже не уверен, что это правильно.
$('.selectpicker').selectpicker('refresh');
Я новичок в этом, поэтому мне нужна помощь.
Ответы
Ответ 1
Я нашел ваш вопрос после той же проблемы. Добавляя $('.selectpicker').selectpicker('refresh');
точно после добавления элементов в мой список, выполните эту работу.
Поэтому вам, вероятно, нужно найти правильное место для его размещения. Возможно, в успешной части вашего вызова ajax.
Ответ 2
То, что я понял из своего опыта с этим до сих пор -
Если вы добавляете динамические параметры в раскрывающееся меню, вам нужно будет вызвать функцию ниже непосредственно перед добавлением опции
$(".selectpicker").selectpicker();
После того, как вы завершили добавление опций, вызовите функцию ниже (если вы используете ajax для добавления опции, добавьте эту функцию в успешную часть, как только что ответили Athina)
$('.selectpicker').selectpicker('refresh');
Если вы столкнулись с какой-то странной проблемой: покажите раскрывающееся меню, а не данные, или когда-либо выпадающий список не отображается правильно, то определенно вы должны были ошибиться при размещении функции и ничего больше.
Ответ 3
Изменение имени класса selectpicker при скрытии:
<select name="key" class="selectpicker_oncreate">
При обновлении:
$('.selectpicker_oncreate').selectpicker('refresh');
Ответ 4
В моем Ajax successCallBack я пытаюсь манипулировать выпадающим списком с id как reasonCode на основе dynamicId (значение get from server), как показано ниже:
$('#reasonCode option[value='+dynamicId+']').prop('selected', true);
но, к сожалению, это не сработало, пока я не добавил следующую строку:
$('#reasonCode').selectpicker('refresh');
Ответ 5
Если метод обновления не помогает, попробуйте добавить некоторую задержку.
setTimeout(() => {
jQuery('.selectpicker').selectpicker('refresh');
}, 500);