Ho un select2 v4.0.0 che viene popolato da un array Ajax. Se imposto la val di select2 posso vedere tramite il debug javascript che ha selezionato l'elemento corretto (# 3 nel mio caso), tuttavia questo non viene mostrato nella casella di selezione, mostra ancora il segnaposto.
Mentre dovrei vedere qualcosa del genere:
Nei miei campi del modulo:
<input name="creditor_id" type="hidden" value="3">
<div class="form-group minimal form-gap-after">
<span class="col-xs-3 control-label minimal">
<label for="Creditor:">Creditor:</label>
</span>
<div class="col-xs-9">
<div class="input-group col-xs-8 pull-left select2-bootstrap-prepend">
<select class="creditor_select2 input-xlarge form-control minimal select2 col-xs-8">
<option></option>
</select>
</div>
</div>
</div>
Il mio javascript:
var initial_creditor_id = "3";
$(".creditor_select2").select2({
ajax: {
url: "/admin/api/transactions/creditorlist",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term,
c_id: initial_creditor_id,
page: params.page
};
},
processResults: function (data, page) {
return {
results: data
};
},
cache: true
},
placeholder: "Search for a Creditor",
width: "element",
theme: "bootstrap",
allowClear: true
}).on("select2:select", function (e) {
var selected = e.params.data;
if (typeof selected !== "undefined") {
$("[name='creditor_id']").val(selected.creditor_id);
$("#allocationsDiv").hide();
$("[name='amount_cash']").val("");
$("[name='amount_cheque']").val("");
$("[name='amount_direct']").val("");
$("[name='amount_creditcard']").val("");
}
}).on("select2:unselecting", function (e) {
$("form").each(function () {
this.reset()
});
("#allocationsDiv").hide();
$("[name='creditor_id']").val("");
}).val(initial_creditor_id);
Come posso fare in modo che la casella di selezione mostri l'elemento selezionato anziché il segnaposto? Forse dovrei inviarlo come parte della risposta JSON AJAX?
In passato, Select2 richiedeva un'opzione chiamata initSelection che veniva definita ogni volta che veniva utilizzata un'origine dati personalizzata, consentendo di determinare la selezione iniziale per il componente. Questo ha funzionato bene per me nella v3.5.
select
conajax
si verifica un errore, l'opzione ajax non è consentita con selezionare ...