我有一个select2多项目选择器:
var location = document.createElement('div');
location.id = 'location'
$.each(attributes.locations, function (i, obj) {
$('#location').append($('<option>', {
value: obj.id,
text: obj.name
}));;
})
$('#location').select2({
multiple: true
});
我可以通过以下方式获取所选值:
$("#location").select2('data')
但我找不到任何设置默认选定位置的方法。
我最合乎逻辑的尝试:
$("#location").val(["c9e972df-6fc7-4087-a099-77da7c9ff2e4"]).trigger("change")
答案 0 :(得分:0)
只需在.val()函数
中传递值数组$(&#34;#位置&#34)。VAL([&#34;值1&#34;&#34;值2&#34;])
答案 1 :(得分:0)
您可以做的是将val
数组作为select2
元素。试试这个:
var deflocations = ["New York", "Arizona", "Denver"];
var location = document.createElement('div');
location.id = 'location'
$.each(attributes.locations, function (i, obj) {
$('#location').append($('<option>', {
value: obj.id,
text: obj.name
}));;
})
$('#location').select2({
multiple: true
});
$("#location").val(deflocations).trigger("change");
您可以在此处获取更多信息:Multiple Select in select2
答案 2 :(得分:0)
不要使用.append()
,select2
已经有data
选项,您可以使用此特定格式传递数据:
{
id: ID,
text: TEXT,
selected: IS_SELECTED,
disabled: IS_DISABLED
}
最好的办法是map
数组(即使您使用的是ajax请求)。
示例:
var data = $.map(data, function(element) {
var isSelected = false;
if(element.country === 'ARGENTINA' || element.country === 'UK')
isSelected = true;
return {
id: element._id,
text: element.country,
selected: isSelected
}
});
$('#select').select2({
data: data,
multiple: true
});
选中此JSFIDDLE