我在.NET MVC网站中使用Select2,允许用户轻松搜索和选择表单中的项目。这当前工作正常,但我的用户询问他们是否可以将一个项目列表粘贴到框中,而不是逐个搜索和选择它们。
我找到了有关Select2 tokenizer
参数的信息,该参数允许使用自定义标记符重载默认标记生成器。但是大多数示例我发现目标是旧版本的Select2,而我使用的是4.0版本。
如何使用ajax允许粘贴的令牌列表来解决它们?
答案 0 :(得分:0)
以下是我实现此方法的方法。使用已定义的Ajax方法搜索用,
或;
分隔的每个标记,并使用返回的第一个结果。
$("…").select2({
…
tokenizer: function (input, s2, callback) {
var term = input.term;
if (term.indexOf(',') < 0 && term.indexOf(';') < 0)
return input; // Exit if no tokens
var parts = term.split(/,|;/);
for (var i = 0; i < parts.length; i++) {
var part = parts[i].trim();
if (part.length > 2) {
$.ajax({
url: s2.options.ajax.url,
dataType: s2.options.ajax.dataType,
data: s2.options.ajax.data({ term: part }),
async: false, // If async then unable to return unmatched tokens
success: function (data) {
var pr = s2.options.ajax.processResults(data, { term: part });
callback(pr.results[0]);
parts.splice(i--, 1);
}
});
}
}
return { term: parts.join(';') }; // Rejoin unmatched tokens
},
…
});