Все другие похожие решения, представленные в предыдущем ответе, не работают для меня, поэтому, пожалуйста, помогите?
Проще говоря:
Создать страницу: выберите вариант из выпадающего списка. Идентификатор сохраняется в БД
Страница редактирования: раскрывающийся список должен по умолчанию использовать опцию с использованием идентификатора из БД
Код:
$("#vehicle_id").selectize({
valueField: "id",
labelField: "vehicle_model",
searchField: "vehicle_model",
options: [],
create: false,
render: {
option: function(item, escape) {
return "<div>" +
"<span class=title>" +
"<span class=renderline1><b>" + escape(item.vehicle_model) + "</b></span>" +
"<span class=renderline2>" + escape(item.vehicle_derivative) + "</span>" +
"</span>" +
"</div>";
}
},
load: function(query, callback) {
if (!query.length) return callback();
$.ajax({
url: "ajax.php",
type: "post",
dataType: "json",
data: {
a: "search",
term: query
},
error: function() {
callback();
},
success: function(res) {
callback(res);
}
});
}
});
$("#vehicle_id")[0].selectize.setValue(165);
ajax.php возвращает:
[{"id":"165","vehicle_model":"KIA","vehicle_derivative":"Cerato"},{"id":"786","vehicle_model":"KIA","vehicle_derivative":"Rio"}]
Вопрос 1:
Почему setValue не работает? Я понимаю, что это заполняет параметры, основанные на удаленных данных. Так что, конечно, setValue не работает, потому что при загрузке страницы, нет никаких вариантов для начала. Так нужно ли мне сначала добавить опцию? Но тогда не будет ли этот беспорядок с фактической опцией, возвращенной из ajax? Это очень запутанно: /
Вопрос 2:
Вы заметите, что json возвращает 3 элемента на автомобиль, ID, модель, производную.
Когда выбран элемент, Как настроить labelField для отображения модели / производной таким же образом, как он отображается.
Ответ 1: Я думаю, что вы должны устанавливать значение только тогда, когда у вас есть несколько вариантов. Вы можете установить значение после возврата некоторых параметров с сервера.
Ответ 2: использование item
функция в render
объект, как вы делаете с option
,
Будет что-то вроде этого:
...
render: {
option: function (item, escape) { ... },
item: function (item, escape) {
return "<div>" +
"<span class=title>" +
"<span class=renderline1><b>" + escape(item.vehicle_model) + "</b></span>" +
"<span class=renderline2>" + escape(item.vehicle_derivative) + "</span>" +
"</span>" +
"</div>";
}
}
Других решений пока нет …