У меня есть выбор начальной загрузки, который я хочу изменить значение программно.Что-то вроде:
<select class="form-control selectpicker" id="testpicker" data-lastselected="Ketchup">
<option>Mustard</option>
<option selected="">Ketchup</option>
<option>Relish</option>
</select>
Чтобы изменить его, я использую следующую функцию:
$('#testpicker').selectpicker('val', value to change);
И я слушаю, как это меняется с:
$('select').on("change", function() {}
Внутри функции изменения у меня есть оператор if, спрашивающий пользователя, действительно ли он хочет изменить опцию и продолжить процесс:
if (!confirm("Sure you want to change to " + $('#testpicker').val())) {
$('#testpicker').selectpicker('val',
$('#testpicker').data('lastselected'));
} else {
$('#testpicker').data('lastselected', $('#testpicker').selectpicker('val'));
}
Итак, когда ответ пользователя на подтверждение отменен, начальная загрузка-select входит в бесконечный цикл, всегда показывая диалоговое окно подтверждения, пока пользователи не примут его!
Вы можете проверить его здесь .
Решение, которое у меня естьиспользуется для обхода этого поведения - для изменения значения используйте:
$('#testpicker').val(value to change).selectpicker('refresh');