У меня есть элементы управления select2, созданные с помощью Ajax (имеют как одно, так и несколько). Я пытаюсь иметь некоторые значения при загрузке страницы, но я не могу заставить это работать. Мой код для select2 приведен ниже:
function AjaxCombo(element, url, multival ){ // multival = true or false
multival = multival || false;
$(element).select2({
minimumInputLength: 2,
multiple: multival,
separator: '|',
ajax: {
url: url,
dataType: 'json',
data: function (term, page) {
var targetname = $(this).attr('name');
var target = targetname.slice(targetname.indexOf("[")+1, targetname.indexOf("]"));
return {
targettype: "search",
target: target,
search: term
};
},
results: function (data, page) {
return { results: data };
}
}
});
}
AjaxCombo(".ajaxselect", "includes/linkedcontrol.php", false);
AjaxCombo(".ajaxmultiselect", "includes/linkedcontrol.php", true);
Комбинация Ajax отлично работает, у меня возникают проблемы только при загрузке начальных значений. Я пробовал этот код ниже, но не смог заставить его работать:
initSelection : function (element, callback) {
var elementText = $(element).attr('data-initvalue');
callback(elementText);
}
Мой HTML-код из php возвращается, как показано ниже:
<input name='header[country]' class='ajaxselect' data-initvalue='[{"id":"IN","name":"India"}]' data-placeholder='Select Country' value='' />
Я вижу, что значения заполняются из php, только у моего jquery возникают проблемы. Мои значения в элементе управления отображаются как US | United States of America
. Я предполагаю, что я отредактировал источник select2 для получения этого формата по умолчанию, не используя формат.
Может ли кто-нибудь помочь мне заполнить значения по умолчанию? Спасибо заранее.
EDIT: Этот вопрос относится к версии Select2 < 4.0. Этот параметр удален из версии 4.0 и теперь намного проще.