我正在使用以下代码从数据库中获取选项,并在打开时填充select2。它工作得很好,但是当我开始在select2搜索输入框中键入内容时,它也会通过相同的ajax函数进行搜索。我如何才能在每次打开时填充它,然后只要打开就将其保留在那里?
此外,由于我使用它来创建标签时,我在附加ajax部分时失去了自动选择新标签的能力,因此,现在无需键入并按Enter即可添加标签,而是将其卡在搜索区域中如果要选择它,我必须手动单击新创建的标签。
有什么想法吗?
function formatMenu (data) {
if (!data.id) { return data.text; }
var $data = $(
'<nobr>' + data.text + '</nobr>'
);
return $data;
};
$('select').select2({
templateSelection: formatMenu,
dropdownCssClass: 'select2-menu',
dropdownParent: $('#parent'),
placeholder: '-',
tags: true,
allowClear: true,
ajax: {
url: "?ajax=get_data,
dataType: 'json',
delay: 250,
data: function (params) {
return {
searchTerm: params.term
};
},
processResults: function (response) {
return {
results: response
};
},
cache: false
},
sorter: function(data) {
return data.sort(function (a, b) {
a = a.text.toLowerCase();
b = b.text.toLowerCase();
if (a > b) {
return 1;
} else if (a < b) {
return -1;
}
return 0;
});
},
createTag: function (params) {
return {
id: params.term,
text: params.term
}
}
});