Изменение выбора в списке с помощью выбранного вами модуля
Я пытаюсь изменить выбранный в данный момент параметр в списке с помощью выбранного вами модуля.
Документация включает обновление списка и запуск события при выборе опции, но ничего (что я вижу) при изменении внешнего вида текущее выбранное значение.
Я сделал jsFiddle, чтобы продемонстрировать код, и мои попытки изменить выбор:
$('button').click(function() {
$('select').val(2);
$('select').chosen().val(2);
$('select').chosen().select(2);
});
Ответы
Ответ 1
В разделе "Обновление, выбранное динамически" в docs: вам нужно запустить событие "selected: updated" в поле
$(document).ready(function() {
$('select').chosen();
$('button').click(function() {
$('select').val(2);
$('select').trigger("chosen:updated");
});
});
ПРИМЕЧАНИЕ. В версиях до 1.0 использовалось следующее:
$('select').trigger("liszt:updated");
Ответ 2
Мой ответ задерживается, но я хочу добавить некоторую информацию, которая пропущена во всех приведенных выше ответах.
1) Если вы хотите выбрать одно значение в выбранном select.
$('#select-id').val("22").trigger('chosen:updated');
2) Если вы используете несколько выбранных вариантов, то вам может потребоваться установить несколько значений за один раз.
$('#documents').val(["22", "25", "27"]).trigger('chosen:updated');
Информация, собранная по следующим ссылкам:
1) Избранные документы
2) Избранная дискуссия Github
Ответ 3
Иногда необходимо удалить текущие параметры, чтобы манипулировать выбранными параметрами.
Вот пример того, как установить параметры:
<select id="mySelectId" class="chosen-select" multiple="multiple">
<option value=""></option>
<option value="Argentina">Argentina</option>
<option value="Germany">Germany</option>
<option value="Greece">Greece</option>
<option value="Japan">Japan</option>
<option value="Thailand">Thailand</option>
</select>
<script>
activateChosen($('body'));
selectChosenOptions($('#mySelectId'), ['Argentina', 'Germany']);
function activateChosen($container, param) {
param = param || {};
$container.find('.chosen-select:visible').chosen(param);
$container.find('.chosen-select').trigger("chosen:updated");
}
function selectChosenOptions($select, values) {
$select.val(null); //delete current options
$select.val(values); //add new options
$select.trigger('chosen:updated');
}
</script>
JSFiddle (включая варианты добавления инструкции):https://jsfiddle.net/59x3m6op/1/
Ответ 4
В случае множественного типа выбора и/или если вы хотите удалить уже выбранные элементы по одному, непосредственно в элементах раскрывающегося списка, вы можете использовать что-то вроде:
jQuery("body").on("click", ".result-selected", function() {
var locID = jQuery(this).attr('class').split('__').pop();
// I have a class name: class="result-selected locvalue__209"
var arrayCurrent = jQuery('#searchlocation').val();
var index = arrayCurrent.indexOf(locID);
if (index > -1) {
arrayCurrent.splice(index, 1);
}
jQuery('#searchlocation').val(arrayCurrent).trigger('chosen:updated');
});