Kleindberg
@Kleindberg
Full stack

Как заставить Select2 искать в data атрибутах?

Я использую последнюю версию 4.0.12 скрипта Select2.

Мой выпадающий список выглядит так:

<select id="langselect">
    <option data-lang="Английский">English</option>
    <option data-lang="Русский">Russian</option>
</select>

Я использую matcher для поиска по первой букве:

function matchStart(term, text) {
    if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
        return true;
    }
    return false;
}
$.fn.select2.amd.require(['select2/compat/matcher'], function(oldMatcher) {
    $("#langselect").select2({
        matcher: oldMatcher(matchStart),
    });
});

Мне нужно изменить функцию matchStart() чтобы можно было искать также по data-* атрибутам. Я пытаюсь писать код типа такого:

if ($(data.element).data('lang').toUpperCase().indexOf(term.toUpperCase()) == 0) {
    return true;
}

Но вылазит ошибка Cannot read property 'indexOf' of undefined, toString() не помогает. Полагаю, код должен выглядеть по-другому, но не знаю как. Помогите исправить ошибку.
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 1
duboloms
@duboloms
Люблю есть дубы с кетчупом. Веб-разработчик.
https://select2.org/configuration/data-attributes
Изменено:
Откуда ты data взял? Добавь в список аргументов функции
function matchStart(data, term, text) { ... }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы