jQuery Chosen - обновить список выбора без потери выбора - PullRequest
4 голосов
/ 23 февраля 2012

Я пытаюсь использовать плагин jQuery "Chosen"

(http://harvesthq.github.com/chosen/ и https://github.com/harvesthq/chosen)

в моем проекте.

То, чего я пытаюсь добиться, это обновить список на основе выбора пользователя (ajax call (tree based structure))

Это не большая проблема, потому что я могу использовать .chosen().change(function()) и удалить все неиспользуемые элементы выбораа затем .append новые.

Тогда я могу использовать .trigger("liszt:updated") для обновления списка, но, к сожалению, все выборы удаляются ..

Кто-нибудь знает способ, как обновить выбранный список без потеривыбранные данные?

Теоретически я могу вручную удалить все выбранные сгенерированные

элементы, а затем заполнить их новыми, но тогда возникает проблема с получением данных SELECT "value".

Ответы [ 3 ]

4 голосов
/ 14 марта 2014

Это должно быть довольно просто, если вы сохраните выбранные элементы.Например:

<select data-placeholder="Choose a country..." style="width:350px;" multiple="true"  class="chosen-select">
$(".chosen-select").chosen();

Теперь, перед обновлением выбранного, убедитесь, что вы сохранили выбранные элементы следующим образом:

var chosenSelectedItems = $(".chosen-select").val(); // this gets you the select value data
// Update the select items
$('.chosen-select').trigger('liszt:updated');
$(".chosen-select").val(chosenSelectedItems);

Это должно быть в состоянии сбросить исходные значения до изменения,

1 голос
/ 09 апреля 2015

Новый код теперь обновляет список, не теряя выборки, и сортирует выборки на основе порядка опций.

$('.chosen-select').trigger('chosen:updated');

Ссылка на страницу проекта .

0 голосов
/ 24 сентября 2012

Я создал несколько каскадных или зависимых выпадающих меню, используя selected, но я использовал их в дополнение к knockoutjs.KnockoutJS используется для привязки данных (в вашем случае select) к объекту и элементу DOM.Knockout также позволяет вам создавать собственные привязки для обработки вещей, которые они, возможно, не ожидали прямо из коробки.С учетом вышесказанного я создал пользовательскую привязку для нокаута, в которой использовался Chosen, и это получилось хорошо ...

В нашем случае мы разрешаем пользователям выбирать канал (используя selected), которые мы затем загружаем в их местоположения (либопутем отображения или создания другого элемента select) и запускает нашу настраиваемую привязку, которая обновит данные и активирует нашу настраиваемую привязку, которая сообщит, выбранный для выполнения .trigger("liszt:updated"), но сохраняет данные в фоновом режиме.

Наш код довольнопроприетарным, и я не знаю, что это обязательно покажет вам, как этого добиться, но, возможно, это даст вам другой взгляд на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...