Я пытаюсь загрузить данные для плагина jQuery Selectize.js через ajax, но не могу удалить параметры, загруженные предыдущими вызовами, из раскрывающегося элемента.
Я застрял в этом код, в котором я могу загружать данные через ajax и показывать их в раскрывающемся списке, но я хотел бы удалить их, когда раскрывающийся список закрыт (поскольку также удаляется введенный текст), и загрузить новые из другого вызова ajax (после ввода нового текста ), но команды ClearOptions(true)/refreshItems() ничего не удаляет. Я хотел бы удалить только элементы в раскрывающемся списке. Если какой-либо элемент выбран, он должен оставаться таковым.
РЕДАКТИРОВАТЬ:
Основываясь на комментариях ниже, я обновил здесь пример кода. Текущее состояние: элементы правильно загружаются в качестве опций для раскрывающегося списка, раскрывающийся список остается открытым при загрузке данных, а введенный текст не удаляется после размытия.
Единственная проблема, требующая решения (пока): что когда я набираю «что-то», данные загружаются правильно через ajax, тогда я выбираю любой вариант. Пока все в порядке. Но когда я набираю «другой», предыдущие параметры из раскрывающегося списка удаляются (это правильно), но также удаляется и выбранный вариант (не правильно). Я понимаю, почему это произошло (выбранные параметры удалены, поскольку удалены параметры из выпадающего меню), но понятия не имею, как это решить.
var selectize = $('#selectize').selectize({
sortField: 'text',
loadThrottle: 500,
onFocus: function() {
if (this.items[0] == '0') {
this.clear();
}
},
load: function(query, callback) {
if (!query.length || query.length < 2) return callback();
selectize[0].selectize.clearOptions();
selectize[0].selectize.renderCache = {};
var value = selectize[0].selectize.currentResults.query;
var ajax = [{'value': '31', 'text': 'aaa yyy'}, {'value': '32', 'text': 'aaa xxx'}, {'value': '33', 'text': 'aaa zzz'}]; // simulation of loading data via ajax
callback(ajax);
// without those two lines I was not able to open dropdown menu after loading new options, IDKW
selectize[0].selectize.blur();
selectize[0].selectize.focus();
// without this line I've lost typed text when loading new options to dropdown
setTimeout(function() {
selectize[0].selectize.setTextboxValue(value);
}, 100);
}
});
Подробнее здесь: https://stackoverflow.com/questions/792 ... ta-loading