Ajax dizisinden doldurulan bir select2 v4.0.0'ım var. Select2'nin değerini ayarlarsam, javascript hata ayıklama yoluyla doğru öğeyi seçtiğini görebilirim (benim durumumda # 3), ancak bu seçim kutusunda gösterilmiyor, yine de yer tutucuyu gösteriyor.
Halbuki şöyle bir şey görmeliyim:
Form alanlarımda:
<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>
JavaScript'im:
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);
Seçim kutusunun yer tutucu yerine seçilen öğeyi göstermesini nasıl sağlayabilirim? Bunu AJAX JSON yanıtının bir parçası olarak göndermeli miyim?
Geçmişte, Select2, özel bir veri kaynağı kullanıldığında tanımlanan ve bileşen için ilk seçimin belirlenmesine izin veren initSelection adlı bir seçeneğe ihtiyaç duyuyordu. Bu benim için v3.5'te iyi çalıştı.
select
ileajax
bu hatayı yükselir, bu seçenek onun ... seçeneğini ile izin verilmez AJAX