select2多个选择默认项目

时间:2018-03-10 11:26:50

标签: jquery jquery-select2

我有一个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")

3 个答案:

答案 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