Подтвердить что ты не робот

Изменение поведения поиска в плагине jquery

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

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

Я сомневаюсь, что это changeble, просто добавив опции в конструктор, но я готов изменить /hardcode source script.

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

4b9b3361

Ответ 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
});