我使用Select2进行标记。它就像一个魅力,但我有一个额外的要求:匹配器应该不仅仅匹配项目的文本。
让我解释。该matcher
函数有两个参数,term
和text
。这允许我们比较给定的标签和输入的文本。但是,如果我为每个标签定义附加数据(通过tags
函数),我将无法在匹配器中访问它。
示例代码:
// #myinput is a hidden input field
$('#myinput').select2({
matcher: function(term, text) {
return text.toUpperCase().indexOf(term.toUpperCase()) >= 0;
},
tags: function() {
var tags = [];
$('#myselect').find('option').each(function(index, option) {
option = $(option);
tags.push({
id: option.val(),
text: option.text(),
category: option.data('category')
});
});
return tags;
}
})
我为每个标签设置了强制id
和属性。text
此外,还有一个名为category
. 我想匹配文本和类别,而不仅仅是文本。
那可能吗?