我正在使用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
答案 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选择值的任何地方都使用了它。