Eu tenho um select2 v4.0.0 sendo preenchido a partir de uma matriz Ajax. Se eu definir o val do select2, posso ver via depuração de javascript que ele selecionou o item correto (# 3 no meu caso), no entanto, isso não é mostrado na caixa de seleção, ainda está mostrando o espaço reservado.
Considerando que eu deveria estar vendo algo assim:
Em meus campos de formulário:
<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>
Meu 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);
Como posso fazer a caixa de seleção mostrar o item selecionado em vez do espaço reservado? Devo enviar isso como parte da resposta JSON AJAX, talvez?
No passado, Select2 exigia uma opção chamada initSelection que era definida sempre que uma fonte de dados personalizada estava sendo usada, permitindo a seleção inicial do componente a ser determinado. Isso funcionou bem para mim na v3.5.
select
comajax
ele levanta o erro, essa opção ajax não é permitida com o select ...