【发布时间】:2015-10-01 03:25:50
【问题描述】:
我试图在页面加载时在下拉列表框中设置表单值,该下拉列表框通过 ajax 调用加载值。有人建议我在另一个线程中使用 addOption 来解决不同的问题,但不幸的是,该选项对我不起作用,因为在这种情况下数据 id 和数据名称不同,我只在呈现表单时获取数据 ID。我注意到 addOption 代码在 ajax 请求发回数据之前被执行。
以下是项目中的代码 sn-ps。 ajax请求完成后有没有办法设置值?
HTML
<select name="country" placeholder="Please Select Country ..."></select>
数据填充,JavaScript 代码
$('[name="country"]').selectize({
valueField: 'id',
labelField: 'name',
searchField: 'name',
preload: true,
create: false,
render: {
option: function(item, escape) {
return '<div>' + escape(item['name']) + '</div>';
}
},
load: function(query, callback) {
$.ajax({
url: '/countrydata',
type: 'GET',
error: function() {
callback();
},
success: function(res) {
callback(res);
}
});
},
});
Ajax 调用返回的数据
id name
1 USA
2 China
3 Japan
以下是我想要工作的值设置代码
$('[name="country"]').selectize();
$('[name="country"]')[0].selectize.setValue(3);
如果 valueField 和 labelField 相同,我可以按照另一篇文章中的建议使用以下 addOption 方法,但由于我只在表单呈现时获取 Id,我无法使用以下代码。
var item = {};
item.id = countryName;
item.name = countryName;
$('[name="country"]')[0].selectize.addOption(item);
【问题讨论】:
-
嗨。从您的 AJAX 返回的数据与您在问题中发布的格式完全相同?像列。还是 JSON 响应?
-
我已经用 JSON 的 AJAX 请求的简单模型编写了这个 jsfiddle,它似乎可以工作。
标签: javascript jquery selectize.js