Как получить имя из идентификатора в комбо select2?
Я имею select2
ComboBox данные загружаются Ajax. Я пытаюсь установить значение по умолчанию для select2
читая id
от входного значения (которое установлено на стороне сервера) и установите его в select2
программно.
Я думаю, что я должен реализовать initSelection()
функционировать таким образом, чтобы решить эту проблему.
Вот мой код:
Ввод HTML:
<input type="hidden" class="mySelect2" value="01" name="someName" />
Значение "01" устанавливается на сервере
JavaScript это:
$(".mySelect2").select2({
ajax: {
url:"data.php",
dataType:"json",
data:function(term, page) {
return {
query:term, page: page -1
} ;
},
results:function(data, page) {
return data
}
}
});
Я попробовал это, но это не сработало.
$(".mySelect2").select2('val', '01');
И произошла ошибка: "не могу вызвать val(), если initSelection()
не определено "
2 ответа
Попробуй что-нибудь подобное
$(function(){
$(".mySelect2").select2({
ajax: {
url:"data.php",
dataType:"json",
data:function(term, page) {
return {
query:term, page: page -1
} ;
},
results:function(data, page) {
return data
},
}
});
$(".mySelect2").select2('data', {id:'01',text:'01'});
})
HTML-код
<input type="hidden" class="mySelect2" style="width:100px;" value="[{id:'01',text:'01'}]" name="someName" />
Общая предпосылка инициализации значения по умолчанию в элементе управления select2 с использованием ajax может быть решена с помощью чего-то вроде:
initSelection: function (element, callback) {
var id = $(element).val();
if (id !== "") {
$.ajax("data.php", {
data: {
id: id // return a single item from your service
},
dataType: "json"
}).done(function (data) {
var results = [];
$.each(data, function (index, item) {
results.push({
id: item.Id, // whatever your id field is
text: item.TextValue // whatever your text field is
});
});
callback(results[0]);
});
}
}
Я не PHP человек, но это должно быть стандартным для запросов ajax. Подход предполагает, что вы можете вернуть как один результат, так и список.