Я борюсь с select2.
Учитывая этот пример данных json:
{"id":1,"text":"search term category","data":[{"Key":"catalog","Value":"search term catalog"},{"Key":"make","Value":"search term make"},{"Key":"model","Value":"search term model"}]}
Как я могу искать не только в поле "текст", но и во всех полях "значение" в массив данных?
Я читал о настраиваемый сопоставитель, но не мог заставить его работать и не мог найти пример, с которым я мог бы работать.
Надеюсь, вы поможете мне или предоставите образец.
Спасибо.
Обновлено: Fiddle: jsfiddle



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно написать собственный сопоставитель, примеры представлены в select2 документы. Я изменил предоставленный ими пример, чтобы он мог сработать для вас.
function matchCustom(params, data) {
// If there are no search terms, return all of the data
if ($.trim(params.term) === '') {
return data;
}
// `params.term` should be the term that is used for searching
// `data.text` is the text that is displayed for the data object
if (data.text.indexOf(params.term) > -1) {
return data;
}
// checking if a value matches (my addition to their example)
if (data.data.some(({Value}) => Value.includes(params.text)) {
return data;
}
// Return `null` if the term should not be displayed
return null;
}
$(".js-example-matcher").select2({
matcher: matchCustom
});
Возможно, вам придется изменить мои дополнения, чтобы они соответствовали требованиям совместимости вашего браузера (например, я использую функции с жирной стрелкой, деструктуризацию объектов, String.prototype.includes и Array.prototype.some).
Боюсь, вы используете Select2 версии 3.x, которая, насколько я могу судить, не поддерживает то, что вам нужно. Однако версия 4.x. Вот модифицированная рабочий пример: jsfiddle.net/b85swr3b/2. (Я не уверен, почему вы изменили data.data.some на data.data.Key, но это неправильное изменение).
Благодарю. Но я не могу заставить детей отображаться в раскрывающемся списке select2, и поиск не работает. Смотрите мой пост выше для скрипки.