Изменение поведения поиска в плагине jquery Chosen - PullRequest
40 голосов
/ 14 февраля 2012

Я использую плагин Chosen для jQuery и хотел бы, чтобы поведение поиска немного изменилось (одиночный выбор).Поиск приводит только к попаданиям, в которых совпадает начало слова в строке поиска.Я хотел бы расширить это также для попадания слов после косой черты и скобок.

Например: строка поиска: " секунда " не соответствует элементам " первая / вторая "или" first (second)".

Я сомневаюсь, что это можно изменить, просто добавив опции в конструктор, но я хочу изменить / жестко закодировать исходный скрипт.

Выбрано: https://github.com/harvesthq/chosen

Ответы [ 5 ]

79 голосов
/ 14 февраля 2012

Как уже упоминалось в некоторых более поздних ответах, плагин теперь реализует опцию для изменения поведения поиска:

search_contains: true

Документация по опциям


Плагин не предоставляет возможность изменить поведение метода поиска.

Если вы хотите изменить сам источник плагина, вот способ сделать это.

Метод поиска в плагине - Chosen.prototype.winnow_results. Он использует регулярное выражение, соответствующее тексту, который «начинается с» поискового запроса:

// "^": means "starts with"
// "searchText" is the text in the search input (it is just cleaned up don't be scared)
regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');

Измените его на:

regex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');

DEMO

45 голосов
/ 01 октября 2012

Поведение поиска можно установить с помощью опции search_contains

Это по умолчанию false

Установите его на true, и выбранное будет также искать совпадения внутри вместотолько начало:

$('#my_dropdown').chosen({ search_contains: true });
7 голосов
/ 15 сентября 2013

Как и в Chosen 1.0, просто добавьте параметр {search_contains: true}

$('.selector').chosen({search_contains: true});

Веселись.

0 голосов
/ 13 июня 2018

Существует опция search_contains, доступная для поиска в подстроке в опциях и может использоваться как:

$(".chosen-select").chosen({
    search_contains: true
});
0 голосов
/ 26 августа 2013

в выбранном 1,0 я сделал в строке 301 & 302

escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
regexAnchor = "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...