我正在使用 Select2(版本 3.4.0)来填充标签列表。这些标签通过 ajax 调用与现有标签匹配,我正在使用createSearchChoice
它来允许创建新标签。代码工作至今,看起来像这样:
$(mytags).select2({
multiple: true,
placeholder: "Please enter tags",
tokenSeparators: [ "," ],
ajax: {
multiple: true,
url: myurl,
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return data;
}
},
createSearchChoice: function(term) {
return {
id: term,
text: term + ' (new)'
};
},
});
一切都很标准,除了注意附加(new)
在createSearchChoice
. 我需要用户知道这不是预先存在的标签。
它按预期工作:如果我开始输入“new-tag”,我会在列表顶部得到建议的“new-tag(new)”标签,如果我选择它,标签列表包含“new-tag(new )”,正如预期的那样。如果标签已经存在,Select2 会检测到匹配,并且不会创建“(新)”选择。按回车键或单击匹配项按预期工作。
当我tokenSeparators
在匹配时键入逗号(我的单个条目)时会出现问题。Select2 关闭该标记,并将标签添加到列表中,但附加了“(新)”标签,即它使用返回值,createSeachChoice
即使它不必这样做。
这是 Select2 中的错误,还是我使用错误(我应该怎么做)?