【问题标题】:Cannot set select2 values无法设置 select2 值
【发布时间】:2018-11-16 13:37:14
【问题描述】:

我正在使用 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 函数,它返回已经在选择中初始化的类别。我希望在选择中设置返回的数据,但它不起作用。因此,例如选择已经有选项“运动”,并从 ajax 返回“运动”。我想选择“运动”。

javascript

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

我的尝试

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

【问题讨论】:

标签: javascript jquery jquery-select2


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    让选定的值在$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 选定值的任何地方都使用它。

    【讨论】:

    • 抱歉,这与我在问题描述中尝试的完全相同。
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 2014-08-12
    • 1970-01-01
    • 2016-04-26
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多