Jump to content

Autocomplete Поиск Не Показывает Товары Содержащие "/"


Go to solution Solved by yr4ik,

Recommended Posts


$(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/ - не идет дальше.

Edited by netoniel
Link to post
Share on other sites

 

var reEscape = new RegExp('(\\' + ['.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
 

Не пробовал, но попробуйте так

Так я уже пробовал - не помогло. Кстати тоже самое со символом "*", а вот точки как ни странно работают.

Link to post
Share on other sites

"Запрещается" совсем не там, где Вы думаете, а в api/Request.php,  строка

            return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val));

Link to post
Share on other sites

"Запрещается" совсем не там, где Вы думаете, а в api/Request.php,  строка

            return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val));

Убрал эту строчку - все равно так же.

Link to post
Share on other sites
  • Solution
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);
Edited by yr4ik
Link to post
Share on other sites

 

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);

Спасибо, не совсем понял, что мы сделали, но спасибо огромное ))

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...