之前回答中提供的所有其他类似相关解决方案对我不起作用,所以请您协助吗?
简单地说:
创建页面:从下拉列表中选择选项。 ID将保存到DB
编辑页面:下拉列表必须使用DB中的ID
默认为选项代码:
$("#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以同样的方式显示模型/衍生物。
答案 0 :(得分:0)
回答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>";
}
}