select2 поиск по двум свойствам

Я хочу добавить текстовое свойство в мои элементы данных select2 и иметь возможность искать его.

Например, у меня есть эти данные:

var data : 
[
    { id : 1, text : 'Item 1', description : 'Long text description for item 1' },
    { id : 2, text : 'Item 2', description : 'Long text description for item 2' },
    { id : 3, text : 'Item 3', description : 'Long text description for item 3' },
]

Я хочу, чтобы select2 мог найти результат, если я наберу текст, который соответствует значению свойства description во входных данных.

Возможно ли это сделать?

Заранее спасибо.

1 ответ

Решение

Решение состоит в том, чтобы создать собственный сопоставитель и использовать его следующим образом.

$('.select2-typeahead').select2
({
    data : 
    [
        { id : 1, text : 'Item 1', description : 'Long text description for item 1' },
        { id : 2, text : 'Item 2', description : 'Long text description for item 2' },
        { id : 3, text : 'Item 3', description : 'Long text description for item 3' },
    ],
    matcher : function(params, data, item)
    {
        if ($.trim(params) === '') 
        {
            return data;
        }

        if(data.toLowerCase().indexOf(params.toLowerCase()) > -1 || item.description.toLowerCase().indexOf(params.toLowerCase()) > -1)
        {
            return data;
        }

        return null;
    }
Другие вопросы по тегам