javascript - Select2 多个选择和允许标签的默认值

标签 javascript jquery html jquery-select2

我有一个 select 2 多选选项

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

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

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

但问题是我允许用户使用 select2 的 tags: true 选项生成选项。

当我设置一个最初在 html 选项中的默认值时它起作用,但是当我设置一个由用户生成的默认值时它不起作用。

这是我第一次使用select2。

我怎样才能做到这一点?

最佳答案

稍微挖掘一下,我可以在 GitHub 上看到这个问题.

一个选项是检查该值是否存在,如果不存在则追加它。

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"); 
<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>

关于javascript - Select2 多个选择和允许标签的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917204/

相关文章:

javascript - NodeJS req.body JSON 有但没有值

java - 我们是否必须发布与 Controller 中的 pojo 对象具有完全相同字段的 json 对象?

JQuery添加li元素导致错位

javascript - html/php表单计算简单公式的显示结果

javascript - 如何将字符串列表从 flask python main 函数传递给 html 中的 javascript?

javascript - 如何检查 JWT token 有效性

javascript - Backbone.js 我如何根据特定的应用程序状态定义一组自定义路由

javascript - 按给定的单元格值查找表行并删除该行

javascript - RequestAnimationFrame 在 Safari 中不可用 - 如何制作流畅的动画?

python - 使用 Django 和单一网页模板在数据库中存储网页内容的最佳方法