netoniel Опубликовано 14 апреля, 2017 Жалоба Поделиться Опубликовано 14 апреля, 2017 (изменено) $(function() { // Автозаполнитель поиска $(".input_search").autocomplete({ serviceUrl:'ajax/search_products.php', minChars:1, width: 500, noCache: false, onSelect: function(value, data){ $(".input_search").closest('form').submit(); }, fnFormatResult: function(value, data, currentValue){ var reEscape = new RegExp('(\\' + ['/' ,'.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; return (data.image?"<img align=absmiddle src='"+data.image+"'> ":'') + value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>'); } }); }); Где то тут запрещается поиск товаров со слешом. Поиск товаров же работает нормально. Например ариткул имеет вид 34554/543, набираешь 34554 - находит товар, набираешь 34554/ - не идет дальше. Изменено 14 апреля, 2017 пользователем netoniel Цитата Ссылка на сообщение Поделиться на другие сайты
FreePM Опубликовано 14 апреля, 2017 Жалоба Поделиться Опубликовано 14 апреля, 2017 var reEscape = new RegExp('(\\' + ['.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); Не пробовал, но попробуйте так Цитата Ссылка на сообщение Поделиться на другие сайты
netoniel Опубликовано 14 апреля, 2017 Автор Жалоба Поделиться Опубликовано 14 апреля, 2017 var reEscape = new RegExp('(\\' + ['.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); Не пробовал, но попробуйте такТак я уже пробовал - не помогло. Кстати тоже самое со символом "*", а вот точки как ни странно работают. Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 14 апреля, 2017 Жалоба Поделиться Опубликовано 14 апреля, 2017 "Запрещается" совсем не там, где Вы думаете, а в api/Request.php, строка return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val)); Цитата Ссылка на сообщение Поделиться на другие сайты
netoniel Опубликовано 14 апреля, 2017 Автор Жалоба Поделиться Опубликовано 14 апреля, 2017 "Запрещается" совсем не там, где Вы думаете, а в api/Request.php, строка return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val));Убрал эту строчку - все равно так же. Цитата Ссылка на сообщение Поделиться на другие сайты
netoniel Опубликовано 14 апреля, 2017 Автор Жалоба Поделиться Опубликовано 14 апреля, 2017 Создатели скрипта говорят, что у них все хорошо работает со слешем https://github.com/devbridge/jQuery-Autocomplete/issues/533 Цитата Ссылка на сообщение Поделиться на другие сайты
Решение yr4ik Опубликовано 15 апреля, 2017 Решение Жалоба Поделиться Опубликовано 15 апреля, 2017 (изменено) var reEscape = new RegExp('(\\' + ['.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); и в ajax/search_products.php $keyword = $simpla->request->get('query', 'string'); меняем на: $keyword = $simpla->request->get('query'); $keyword = preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s\/]/ui', '', $keyword); Изменено 15 апреля, 2017 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
netoniel Опубликовано 15 апреля, 2017 Автор Жалоба Поделиться Опубликовано 15 апреля, 2017 var reEscape = new RegExp('(\\' + ['.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); и в ajax/search_products.php $keyword = $simpla->request->get('query', 'string'); меняем на: $keyword = $simpla->request->get('query'); $keyword = preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s\/]/ui', '', $keyword); Спасибо, не совсем понял, что мы сделали, но спасибо огромное )) Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.