选择2多个选择和允许标签的默认值

Ray*_*vie 9 html javascript jquery select2

我有一个选择2多选选项

<select multiple name="event_type[]" class="form-control" id="selectEvents">
   @foreach ($eTypes as $type)
       <option>{{$type}}</option>
   @endforeach
</select>
Run Code Online (Sandbox Code Playgroud)

我想设置一些默认值,以防用户正在编辑表单.我通过这样做成功地做到了这一点

var s2 = $("#selectEvents").select2({
    placeholder: "Choose event type",
    tags: true
});

s2.val(["Trade Fair", "CA", "Party"]).trigger("change"); //CA doesn't show as a default
Run Code Online (Sandbox Code Playgroud)

但问题是我允许使用tags: trueselect2选项的用户生成的选项.

当我设置最初在html选项中的默认值时,它可以工作,但是当我设置用户生成的默认值时,它不起作用.

这是我第一次使用select2.

我怎样才能实现这一目标?

Ben*_*enG 12

做一点挖掘,我可以在GitHub上看到这个问题.

一种选择是检查值是否存在,append如果不存在则检查.

var s2 = $("#selectEvents").select2({
    placeholder: "Choose event type",
    tags: true
});

var vals = ["Trade Fair", "CA", "Party"];

vals.forEach(function(e){
if(!s2.find('option:contains(' + e + ')').length) 
  s2.append($('<option>').text(e));
});

s2.val(vals).trigger("change"); 
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css" rel="stylesheet"/>

<select multiple name="event_type[]" class="form-control" id="selectEvents">
  <option>Trade Fair</option>
  <option>Party</option>
  <option>Foo</option>
  <option>Bar</option>
</select>
Run Code Online (Sandbox Code Playgroud)