大家早上好,我在尝试将初始选定的选项(通过AJAX请求获得(时被卡住了,将其设置为jQuery select2(多选择(。如果我使用控件,多选择工作正常。当我必须编辑先前保存的模型时,出现了问题,因为我先前选择的所有选项都没有显示。
这是我的观点:
<div class="form-group {{ $errors->has('pubblicazione_giuridica_id') ? 'has-error' : ''}}">
{!! Form::label('pubblicazione_giuridica_id', 'Law Pubs', ['class' => 'col-sm-3 control-label']) !!}
<div class="col-sm-6">
{!! Form::select('pubblicazione_giuridica_id[]', [$pubGiurList], null, ['class' => 'form-control', 'id'=>'select-pgiur', 'multiple'=>'multiple']) !!}
{!! $errors->first('pubblicazione_giuridica_id', '<p class="help-block">:message</p>') !!}
</div>
JavaScript:
$('#select-pgiur').select2({
ajax: {
url: "{!! URL::to('/gare/proc-getpubgiur') !!}",
dataType: 'json',
delay: 150,
data: function (params) {
return { q: params.term, };
},
processResults: function (data, params) {
return { results: data.items, };
},
cache: true
},
language: 'it',
theme: "bootstrap",
placeholder: "Choose an option."
});
控制器:
public function edit($id, Request $request) {
$procedure = $this->getProcedure($id, $request, true);
if (!$procedure) {
return redirect('gare/procedure')->with('alert-warning', 'Gara non trovata - Operazione non consentita');
}
return view('gare.procedures.edit', [ 'procedure'=>$procedure, 'opChoiceList'=>$this->getOpChoiceList(), 'pubGiurList'=>json_encode(GaraPubblicazioneGiuridica::GetPubByGaraId($procedure->id)) ]);
}
模型:
public static function GetPubByGaraId($id){
//TODO: visualizzare le selected publications
$procagg = GaraPubblicazioneGiuridica::where('gara_id','=',$id)->select('id')->get();
if($procagg){
$plucked = $procagg->pluck('nome');
$toReturn = array();
foreach($plucked as $key=>$value){
$toReturn[$key]=$value;
}
return $toReturn;
}
return "";
}
您能为此提供一些启示吗?预先感谢您。
如果我正确理解您的最终目标,则要通过选择"选择"
如果是这样,您正在寻找.trigger('change')
事件。
我个人使用vuejs和手工制作的表格,但这应该指向正确的方向:
$("#your_select2_id").val(selected_values_array).trigger("change");
selected_values_array
是一个JS数组,其中包含您想要选择的值:<option value="1"></option>
。然后.trigger()
更新Select2以显示它们。
希望有帮助!
进行下拉选择器时,您可以指定最初选择的选项:
Form::select(
'pubblicazione_giuridica_id[]',
[$pubGiurList],
$opChoiceList,
['class' => 'form-control', 'id'=>'select-pgiur', 'multiple'=>'multiple']
)
但是,这意味着您需要使用最初选择的选项预先填充Ajax Select2下拉列表。
您可以在J-Query事件上创建AJAX调用,并通过ID绑定数据。
$("#select-pgiur"(。val(data.items(.trigger(" change"(;
也许它可以帮助您....