PageSourceSearch

https://www.storesaad.com/view/asset/user-2-1-5-9558e1a32fdc25642d726a44d08551d6.js

js storesaad.com collected 2026-10-07 22:43:27 UTC 2,883 bytes, 70 lines download raw bytes

1(function($){
2  $(function(){
3
4    // 両系統サポート(検索ページ/ハンバーガー)
5    var KEYWORD_SELECTORS  = '.search-keyword, .side-search-keyword';
6    var PRICE_SELECTORS    = '.search-price, .side-search-price';
7    var ORIGINAL_SELECTORS = '.original-code, .side-search-original-code';
8    var BUTTON_SELECTORS   = '.search-url, .side-search-btn';
9
10    // スコープを内→外に広げながら、最寄りの .search-url を探してクリック
11    function clickNearestSearchButton($origin){
12      var SCOPE_CANDIDATES = [
13        '.search-inputwrap',   // input用のラッパーがある場合
14        '.search_form',        // 商品検索ページのフォームブロック
15        '.search-area',        // ハンバーガー内のUL(※ここに無いことがある)
16        'section.search',      // ★ 今回のハンバーガーではここに .search-url がある
17        '.search',
18        '#menu'
19      ];
20
21      // 1) 候補スコープを順にたどる
22      for (var i = 0; i < SCOPE_CANDIDATES.length; i++) {
23        var sel = SCOPE_CANDIDATES[i];
24        var $scope = $origin.closest(sel);
25        if ($scope.length) {
26          var $btns = $scope.find(BUTTON_SELECTORS);
27          if ($btns.length) {
28            // スコープ内に複数ある場合は、同スコープ内のキーワード入力インデックスで対応
29            var $keywordsInScope = $scope.find(KEYWORD_SELECTORS);
30            var idx = $keywordsInScope.index($origin);
31            if (idx >= 0 && idx < $btns.length) {
32              $btns[idx].click();
33            } else {
34              $btns[0].click();
35            }
36            return; // 見つかったら終了
37          }
38        }
39      }
40
41      // 2) それでも見つからなければ、最終フォールバック:ドキュメント全体
42      var $fallback = $(document).find(BUTTON_SELECTORS);
43      if ($fallback.length) {
44        $fallback[0].click();
45      }
46    }
47
48    // Enterで発火(IME変換中は無視)
49    function onEnter(e){
50      if (e.isComposing || e.keyCode === 229) return; // 日本語IME変換中
51      if (e.key === 'Enter' || e.keyCode === 13) {
52        e.preventDefault();
53        clickNearestSearchButton($(e.currentTarget));
54      }
55    }
56
57    // 委譲バインド(動的表示のハンバーガーにも効く)
58    $(document).on('keydown', KEYWORD_SELECTORS + ', ' + PRICE_SELECTORS + ', ' + ORIGINAL_SELECTORS, onEnter);
59
60    // 互換:古いテンプレが keypress 前提のため(不要なら外してOK)
61    $(document).on('keypress', KEYWORD_SELECTORS + ', ' + PRICE_SELECTORS + ', ' + ORIGINAL_SELECTORS, function(e){
62      if (e.keyCode === 13) {
63        e.preventDefault();
64        clickNearestSearchButton($(this));
65      }
66    });
67
68  });
69})(jQuery);
70

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.