Я использую 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
. Я хочу сопоставить текст и категорию, а не только текст.
Это возможно?