Я использую ajax для заполнения значений в select2 single-select.select2 initialize с выбранным значением при обратном вызове
Select2 можно инициализировать вот так (JQuery):
$("#domain").select2({
placeholder: "Placeholder text",
allowClear: true,
multiple: false,
ajax: {
url: "/json/domain",
dataType: "json",
data: function(term, page) {
return {
q: term,
};
},
results: function(data, page) {
return data;
}
}
Это пример ответа:
{"results":[{"id":"1234","text":"Name"}]}
После того, как значение выбрано, Select2 обновляет скрытый вход с идентификатором и отображает «Имя» в промежутке.
Select2 является частью POST, которая запрашивает кучу данных на основе выбранных значений.
Таким образом, после обратной передачи выбранное значение «Имя» естественно уходит из DOM (в то время как «id» сохраняется в скрытом вводе).
Есть ли способ инициализировать select2 после обратной передачи с выбранным значением перед отправкой (отображает предварительный ответ после замены)?
Оглядевшись здесь на SO и в других местах, я пытался что-то вроде этого:
$("#domain").select2({
placeholder: "Placeholder text",
allowClear: true,
multiple: false,
ajax: {
url: "/json/domain",
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return {results: data};
}
},
initSelection: function(element, callback) {
var id = $('#domain').val();
if(id !== "") {
$.ajax("/json/domain", {
dataType: "json"
}).done(function(data) {
callback(function(data) { callback(data); });
});
}
}
});
Это инициализирует но возвращает «неопределенный». Я предполагаю, что это потому, что данные не передаются в initSelection ...
Любые указатели в правильном направлении были бы высоко оценены.
Это снова возвращает 'undefined' на входе (также на начальной странице, а не после отправки). Ajax все еще работает нормально и возвращает данные в правильном формате. – MNorup