Поиск по части слова в компонентах sale.location.selector.* (компоненты выбора местоположения).
По умолчанию, компоненты bitrix:sale.location.selector.*, если включен поиск из клавиатуры, ищут 100%-ное совпадения от начала строк.
Иногда клиенты просят сделать поиск не от начала строки а по всему содержимому строк.
Техподдержка порекомендовала править компонент, но в компоненте только логика и нет визуального процессинга по вводу данных с инпута выбора местоположения пользователем. Искал в js шаблона компонента, но там того что нужно не было. Заметил, что в шаблоне компонента подключаются системные скрипты, в одном из которых была найдена обработка по поиску совпадений значений местоположений. Скрипт /bitrix/js/sale/core_ui_combobox.js , можете его скопировать в папку шаблона и поправить в нем строку (на момент написания поста это строка 731):
было
поменять на
Также, по умолчанию, компонент выдает результат если пользователь ввел минимум два символа в поиск. Если вам нужно поменять это значение - строка 45:
По поводу, если будут обновления от Битрикса в дальнейшем - скрипт который мы правим системный и очень связан с другими системными скриптами и компонентами. Поэтому, после обновлений стоит проверять работу компонента, так как некоторые методы могут быть переработаны или наоборот - могут добавить новые методы или удалить предыдущие.
Если у кого-то есть советы по решению данной задачи - буду рад почитать.
По умолчанию, компоненты bitrix:sale.location.selector.*, если включен поиск из клавиатуры, ищут 100%-ное совпадения от начала строк.
Иногда клиенты просят сделать поиск не от начала строки а по всему содержимому строк.
Техподдержка порекомендовала править компонент, но в компоненте только логика и нет визуального процессинга по вводу данных с инпута выбора местоположения пользователем. Искал в js шаблона компонента, но там того что нужно не было. Заметил, что в шаблоне компонента подключаются системные скрипты, в одном из которых была найдена обработка по поиску совпадений значений местоположений. Скрипт /bitrix/js/sale/core_ui_combobox.js , можете его скопировать в папку шаблона и поправить в нем строку (на момент написания поста это строка 731):
было
if(sv.cache.nodes[value].DISPLAY.toLowerCase().indexOf(queryLc) == 0){ // match, but only from the start of line |
if(sv.cache.nodes[value].DISPLAY.toLowerCase().indexOf(queryLc) !== -1){ // match in line |
startSearchLen: 2, // minimum string length search will start with |
Если у кого-то есть советы по решению данной задачи - буду рад почитать.