我无法使用select2版本4.0来开发一个选项,该选项可以在写入所需标签名称的几个字母(2,3个字母)后通过ajax调用建议存储在数据库中的标签项目。
由于以前版本的更改,以前版本的initSelection
方法不再存在。引发错误"No select2/compat/initSelection".
这是我以前版本中使用的代码:
$('.addTags').select2({
placeholder: "Problem Tags",
allowClear: true,
minimumInputLength: 2,
tags: true,
createSearchChoice: function (term, data) {
if ($(data).filter(function () {
return this.text.localeCompare(term) === 0;
}).length === 0) {
return {
id: term,
text: term
};
}
},
initSelection: function (element, callback) {
var tags = element.val().split(",");
var data = [];
for (var i = 0; i < tags.length; i++) {
data.push({ id: tags[i], text: tags[i] });
}
callback(data);
},
multiple: true,
ajax: {
type: 'GET',
url: "/Problem/GetTags",
dataType: 'json',
data: function (term, page) {
return {
term: term,
page_limit: 15
};
},
results: function (data, page) {
return { results: data.tags };
}
}
});
最佳答案
使用Select2 4.0.0版本时,必须将createSearchChoice
更改为createTag
:
createTag: function (params) {
var term = $.trim(params.term);
if (term === '') {
return null;
}
return {
id: term,
text: term,
newTag: true // add additional parameters
}
}
那么通常不需要
initSelection
(请参见https://select2.org/upgrading/migrating-from-35#removed-the-requirement-of-initselection)。在ajax选项中,将
results
处理程序更改为processResults
:processResults: function (data, page) {
return { results: data.tags };
},
例如,这是一个jsfiddle:https://jsfiddle.net/beaver71/bhodkpav/
关于jquery - Select2 4.0.0不支持标记,无法通过ajax调用获取标记项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48060581/