无法设置select2值

时间:2018-11-16 02:26:31

标签: javascript jquery jquery-select2

我正在使用Select2 v4,并且已将对象初始化:

posts.blade.php

<select class="form-control" name="categories[]" multiple="multiple" id="cat_select">
  @foreach ($categories as $c)
   <option value="{{$c->id}}">{{$c->title}}</option>
  @endforeach
</select>

我已经将其初始化为默认值,用户可以手动选择默认值。我有一个ajax函数,它返回已经在选择中初始化的类别。我希望在选择中设置返回的数据,但是它不起作用。因此,例如select已具有选项“ sports”,并且从ajax返回“ sports”。我希望选择“运动”。

javascript

let select_cat = $("select#cat_select").select2();

我尝试过的事情

$("#cat_select").val([data.title]).trigger("change"); //which doesn't work for some reason

2 个答案:

答案 0 :(得分:0)

这是我的解决方案。我必须销毁select2,然后将值(数组)添加到选择中,然后将其重新初始化。

  data.categories.map(function(el){
    my_categories.push(el.id);
   });
  $("#cat_select").select2('destroy');
  $("#cat_select").val(my_categories);
  $("#cat_select").select2();

答案 1 :(得分:0)

首先,您需要将所选值从控制器返回到刀片文件。

让所选值位于$selected中。返回为

return view('posts', compact('selected'));

然后在刀片文件中,您必须添加以下脚本

 $(document).ready(function() {
      var selected = <?php echo json_encode($selected) ?>;
      $('#cat_select').select2();
      $('#cat_select').val(selected);
      $('#cat_select').trigger('change');
    });

此解决方案一直在为我工作,并且在需要select2选择值的任何地方都使用了它。