Изменение поведения поиска в плагине jquery
Я использую плагин Chosen для jQuery и хотел бы, чтобы поведение поиска немного менялось (один выбор). Поиск результатов приводит только к хитам, где начинается начало слова в строке соответствия. Я хотел бы расширить это, чтобы также ударить слова после косой черты и скобок.
Например:
строка поиска: " вторая" не соответствует элементам " первая/вторая" или " первая (вторая)".
Я сомневаюсь, что это changeble, просто добавив опции в конструктор, но я готов изменить /hardcode source script.
Выбрано: https://github.com/harvesthq/chosen
Ответы
Ответ 1
Как упоминалось в более поздних ответах, плагин теперь реализует опцию для изменения поведения поиска:
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
Ответ 2
Поведение поиска можно установить с помощью опции search_contains
Это по умолчанию false
Установите его на true
, а также выберите совпадения внутри, а не только начало:
$('#my_dropdown').chosen({ search_contains: true });
Ответ 3
Как и в Chosen 1.0, просто добавьте опцию {search_contains: true}
$('.selector').chosen({search_contains: true});
Удачи.
Ответ 4
в выбранном 1.0 я сделал на линии 301 & 302
escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
regexAnchor = "";
Ответ 5
Существует опция search_contains
доступная для поиска подстроки в параметрах и может использоваться как:
$(".chosen-select").chosen({
search_contains: true
});