PageSourceSearch

https://www.chaochay.ru/catalog/view/javascript/search_suggestion.js

js chaochay.ru collected 2026-10-04 22:39:01 UTC 3,269 bytes, 95 lines download raw bytes

1$(document).ready(function () {
2
3  // use default autocomplete script if not defined ss_autocomplete
4  if ($.fn.ss_autocomplete === undefined) {
5    $.fn.ss_autocomplete = $.fn.autocomplete;
6  }
7
8  if (window.search_element === undefined) {
9    search_element = '#search input[name="search"]';
10  } else {
11    search_element = window.search_element;
12  }
13  
14  $(search_element).ss_autocomplete({
15    delay: 500,
16    source: function (request, response) {
17      if (request === '') {
18        this.hide();
19        return false;
20      }
21      $.ajax({
22        url: 'index.php?route=extension/module/search_suggestion/ajax&keyword=' + encodeURIComponent(request),
23        dataType: 'json',
24        success: function (json) {
25          response($.map(json, function (item) {
26            var elements = [];
27            $.each(item['fields'], function (field_name, field) {
28              if (field != undefined && field[field_name] !== undefined && field[field_name]) {
29
30                var field_html = '';
31                if (field_name == 'image') {
32                  field_html = '<img src="' + field[field_name] + '" />';
33                } else if (field_name == 'price') {
34                  if (field.special) {
35                    field_html = '<span class="price-old">' + field.price + '</span><span class="price-new">' + field.special + '</span>';
36                  } else {
37                    field_html = field.price;
38                  }
39                } else {
40                  field_html = field[field_name];
41                }
42
43                if (field.label != undefined && field.label.show != undefined && field.label.show) {
44                  field_html = '<span class="label">' + field.label.label + '</span>' + field_html;
45                }
46                if (field.location != undefined && field.location == 'inline') {
47                  field_html = '<span class="' + field_name + '">' + field_html + '</span>';
48                } else {
49                  field_html = '<div class="' + field_name + '">' + field_html + '</div>';
50                }
51
52                elements.push({sort: field.sort, html: field_html});
53              }
54            });
55
56            // sort
57            elements.sort(function (a, b) {
58              return a.sort - b.sort
59            });
60
61            // implode
62            var elements_html = '';
63            $.each(elements, function (index, element) {
64              if (element != undefined) {
65                elements_html = elements_html + element.html;
66              }
67            });
68            
69            if (item['type'] != undefined) {
70              item_type = item['type'];
71            } else {
72              item_type = '';
73            }
74            
75            elements_html = '<div class="search-suggestion ' + item_type + '">' + elements_html + '</div>';
76
77            return {
78              label: elements_html,
79              value: item['href']
80            };
81          }));
82        }
83      });
84    },
85    select: function (item) {
86      if (item['value'] !== '') {
87        location.href = item['value'];
88      }
89      return false;
90    },
91    focus: function (event, ui) {
92      return false;
93    }
94  });
95});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.