Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript select2中的默认选定选项使用远程数据进行多选_Javascript_Jquery_Laravel_Jquery Select2 - Fatal编程技术网

Javascript select2中的默认选定选项使用远程数据进行多选

Javascript select2中的默认选定选项使用远程数据进行多选,javascript,jquery,laravel,jquery-select2,Javascript,Jquery,Laravel,Jquery Select2,我正在尝试将默认选定选项添加到具有远程数据的multiple select2。但设置的是标题而不是选项文本。这是我的代码: Html <select class="form-control select_medicines" id="select_medicines" name="medicines[]" multiple="multiple"> @foreach($medicines as $m

我正在尝试将默认选定选项添加到具有远程数据的multiple select2。但设置的是标题而不是选项文本。这是我的代码:

Html

<select class="form-control select_medicines" id="select_medicines" name="medicines[]" multiple="multiple">
    @foreach($medicines as $medicine)
        <option value="{{$medicine->id}}" selected="selected">{{$medicine->fa_name . "(" . $medicine->en_name . ")"}}</option>
    @endforeach
</select>
HTML

<select class="form-control select_medicines" id="select_medicines" name="medicines[]" multiple="multiple"></select>
@if(count($medicines_id) > 0)
    @foreach($medicines_id as $k => $medicine_id)
        <input value='{{json_encode("{id: $medicine_id, text: $medicines_fa_name[$k]}")}}' class="checked_medicines" readonly hidden>
    @endforeach
@endif

我不知道我是否了解你。您是否试图将JSON数据存储在option标记的value属性中

<select class="form-control select_medicines" id="select_medicines" name="medicines[]" multiple="multiple">
    @foreach($medicines as $medicine)
        <option value='{{json_encode($medicine)}}' selected="selected">{{$medicine->fa_name . "(" . $medicine->en_name . ")"}}</option>
    @endforeach
</select>

@foreach($medicines as$medicine)
{{$medicine->fa_name.(“$medicine->en_name.)”)}
@endforeach

请注意在value属性上使用单引号,以避免将其与JSON字符串的dobleqoutes混用

Hi@Chico3001感谢您的回复。但是这些选择的价值必须是medicine->id。这部分是正确的。问题是选项的文本显示不正确,只设置了标题。我编辑了我的问题。看第二张图片。默认选择的选项必须类似于“搜索后选择”我不确定是什么错误,但在
processResult
中,您没有设置
text
,选择任何选项时将显示该选项。i、 e:只需在json中添加
text:obj.fa_name+”:“+obj.en_name
,即可
返回{id:obj.id,…
谢谢@Swati,但那部分是用于after select的。after select是正确的。我的问题是before select。before select我希望有默认的select选项,默认的select选项没有文本,这是错误的。无论如何,我尝试了你说的代码,但它不起作用。@swatii如果你正在加载option from ajax调用..那么,为什么默认情况下要在dom中添加它们呢?请尝试完全删除它们(选择框中的选项),并在ajax调用后设置所选值。请参阅,这会有所帮助。在设置值后使用
trigger('change');
<select class="form-control select_medicines" id="select_medicines" name="medicines[]" multiple="multiple"></select>
@if(count($medicines_id) > 0)
    @foreach($medicines_id as $k => $medicine_id)
        <input value='{{json_encode("{id: $medicine_id, text: $medicines_fa_name[$k]}")}}' class="checked_medicines" readonly hidden>
    @endforeach
@endif
$('.checked_medicines').each(function () {
    var val = $(this).val();
    var json  = JSON.parse(val);
    //json = {id: 12, text: گلی پیزاید}
    $(".select_medicines").select2('data',json);
});
<select class="form-control select_medicines" id="select_medicines" name="medicines[]" multiple="multiple">
    @foreach($medicines as $medicine)
        <option value='{{json_encode($medicine)}}' selected="selected">{{$medicine->fa_name . "(" . $medicine->en_name . ")"}}</option>
    @endforeach
</select>