1var searchSuggestFormSelector = ".withSuggestSearch_"; 2var searchSuggestAreaSelector = "#search_suggest_area_"; 3var searchSuggestPendingTime = 200; 4var searchSuggestMinLength = 1; 5var searchSuggestURL = ''; 6var searchSuggestAreaTmpl = '<div id="search_suggest_area_"></div>'; 7var searchSuggestTimer = null; 8var searchSuggestCurrentForm = null; 9 10// åæåå¦ç 11jQuery(document).ready(function() { 12 13 // ãµã¸ã§ã¹ãAjaxã®URLçæ 14 searchSuggestURL = EC_WWW_ROOT + "/shop/search/searchsuggest.aspx"; 15 16 // ãã¼ã¯ã¼ããå ¥åãããã¾ãã¯ããã¼ã¯ã¼ãã«ãã©ã¼ã«ã¹ããå ´åã®ã¤ãã³ã 17 jQuery(searchSuggestFormSelector).on( 18 "keyup focus input" , function(e) { triggerSearchSuggest( e, jQuery(this) ); } 19 ); 20 21 jQuery(searchSuggestFormSelector).on( 22 "keydown" , function(e) { 23 if( e.which == 40 ) { 24 jQuery(searchSuggestAreaSelector).find('a:first').focus(); 25 e.preventDefault(); 26 e.stopPropagation(); 27 } 28 }); 29 30 jQuery(document).on( 31 "keydown", searchSuggestAreaSelector, function(e) { 32 if( e.which == 38 ) { 33 var prevObj = jQuery(document.activeElement).parent().prev(); 34 var prevObjParent = jQuery(document.activeElement).parent().parent().prev(); 35 36 if(!prevObj[0] && !prevObjParent[0]) { 37 jQuery(searchSuggestAreaSelector).find('a:last').focus(); 38 } else if(prevObj[0]) { 39 prevObj.find('a:last').focus(); 40 } else if(prevObjParent[0]) { 41 prevObjParent.children(':last').find('a:last').focus(); 42 } 43 e.preventDefault(); 44 e.stopPropagation(); 45 46 } 47 if( e.which == 40 ) { 48 var nextObj = jQuery(document.activeElement).parent().next(); 49 var nextObjParent = jQuery(document.activeElement).parent().parent().next(); 50 51 if(!nextObj[0] && !nextObjParent[0]) { 52 jQuery(searchSuggestAreaSelector).find('a:first').focus(); 53 } else if(nextObj[0]) { 54 nextObj.find('a:first').focus(); 55 } else if(nextObjParent[0]) { 56 nextObjParent.children(':first').find('a:first').focus(); 57 } 58 e.preventDefault(); 59 e.stopPropagation(); 60 } 61 if (e.which == 13) { 62 return jQuery(document.activeElement).click(); 63 } 64 }); 65 66 jQuery(document).on( 67 "focus", searchSuggestAreaSelector, function(e) { 68 jQuery(searchSuggestAreaSelector).find('#suggest_keyword_list_').children('div.suggest_keyword_').css({'background-color':''}); 69 jQuery(searchSuggestAreaSelector).find('#suggest_goods_list_').children().css({'background-color':''}); 70 jQuery(e.target).parent().css({'background-color':'#dedede'}); 71 }); 72 73 // ãµã¸ã§ã¹ããã¼ã¯ã¼ããã¯ãªãã¯ãããå ´åã®ã¤ãã³ã 74 jQuery(document).on( 75 "click", ".suggest_keyword_entry_", function() { selectSearchSuggestKeyword(jQuery(this)); return false; } 76 ); 77 78 // ãµã¸ã§ã¹ãååãã¯ãªãã¯ãããå ´åã®ã¤ãã³ã 79 jQuery(document).on( 80 "click", ".suggest_goods_", function() { selectSearchSuggestGoods(jQuery(this)); } 81 ); 82 83 // ãµã¸ã§ã¹ãã¨ãªã¢å¤ãã¯ãªãã¯ãããå ´åã®ã¤ãã³ã 84 jQuery("body").on( 85 "click", function(e){ hideSearchSuggest(e); } 86 ); 87 88}); 89 90// ãµã¸ã§ã¹ããã¼ã¯ã¼ã鏿æã®å¦ç 91function selectSearchSuggestKeyword(entry) { 92 jQuery(searchSuggestCurrentForm).val(entry.text()); 93 if (jQuery(searchSuggestCurrentForm).data("suggest-submit") == "on") { 94 // suggest-submitãonã®æã¯formãsubmit 95 jQuery(searchSuggestCurrentForm).closest("form").submit(); 96 }else{ 97 // suggest-submitãoffã®æã¯ãµã¸ã§ã¹ãã¨ãªã¢ãéãã 98 removeSearchSuggest(); 99 } 100} 101 102// ãµã¸ã§ã¹ãåå鏿æã®å¦ç 103function selectSearchSuggestGoods(entry) { 104 location.href = entry.find("a").attr("href"); 105} 106 107// ãã¼ã¯ã¼ãå ¥åå¾ãµã¸ã§ã¹ã表示ã¿ã¤ãã¼éå§å¦ç 108function triggerSearchSuggest(e, inputForm) { 109 110 var inputKeyword = inputForm.val(); 111 112 // ã¨ã³ã¿ã¼ã®å ´åã¯ä¸æ 113 if (e.keyCode == 13) { 114 return false; 115 } 116 117 // æ¢ã«è¡¨ç¤ºã¿ã¤ãã¼ãéå§ããã¦ããå ´åã¯åãæ¶ã 118 if (searchSuggestTimer) { 119 clearTimeout(searchSuggestTimer); 120 searchSuggestTimer = null; 121 } 122 123 // å ¥åã空ãæä½å ¥åæåæ°ã«æºããªãå ´åã¯ä¸æ 124 if (inputKeyword == '' || inputKeyword.length < searchSuggestMinLength){ 125 removeSearchSuggest(); 126 return false; 127 } 128 129 // 表示ã¿ã¤ãã¼ãã»ãã 130 searchSuggestTimer = setTimeout(function() { 131 searchSuggestTimer = null; 132 requestSearchSuggest(inputForm, inputKeyword); 133 }, searchSuggestPendingTime); 134 135} 136
137// ãµã¸ã§ã¹ã表示ã¿ã¤ãã¼ãã¿ã¤ã ã¢ã¦ãå¾ã®å¦ç 138function requestSearchSuggest(inputForm, inputKeyword) { 139 140 jQuery.ajax({ 141 url: searchSuggestURL, 142 type: "POST", 143 dataType: "html", 144 cache: false, 145 data: {input_keyword : inputKeyword}, 146 success: function(responseHtml) { 147 // ãµã¸ã§ã¹ãã¨ãªã¢æ¶å» 148 removeSearchSuggest(); 149 150 // ãµã¸ã§ã¹ããã¼ã¿ãåä¿¡ããããã¼ã¯ã¼ããã¯ãªã¢ããã¦ããå ´åã¯ä¸æ 151 if (inputForm.val() == '') { return; } 152 153 // ãµã¸ã§ã¹ããã¼ã¿ãç©ºï¼æ¹è¡ã®ã¿ã®å ´åãå«ãï¼ã®å ´åã¯ä¸æ 154 if (responseHtml.replace(/\s+$/, "") == '') { return; } 155 156 // ãµã¸ã§ã¹ããã¼ã¿ãã»ãã·ã§ã³åãHTMLçã«ç½®ãæãã£ã¦ããå ´åã¯ä¸æ 157 if (responseHtml.indexOf("suggest_keyword_list") == -1 && responseHtml.indexOf("suggest_goods_list") == -1) { return; } 158 159 // ãµã¸ã§ã¹ãã¨ãªã¢è¡¨ç¤º 160 showSearchSuggest(inputForm, responseHtml); 161 } 162 }); 163 164} 165 166// ãµã¸ã§ã¹ãã¨ãªã¢è¡¨ç¤ºå¦ç 167function showSearchSuggest(inputForm, responseHtml) { 168 169 // ãµã¸ã§ã¹ãã¨ãªã¢ã®ãã³ãã¬ã¼ãã追å 170 jQuery("body").append(searchSuggestAreaTmpl); 171 172 // ãµã¸ã§ã¹ãã¨ãªã¢ã®HTMLãã»ãã 173 var suggestArea = jQuery(searchSuggestAreaSelector); 174 suggestArea.html(responseHtml); 175 176 // 表示ä½ç½®ã®èª¿æ´ 177 var ctrl = inputForm; 178 var ctrlOffset = ctrl.offset(); 179 var ctrlLeft = ctrlOffset.left; 180 var ctrlTop = ctrlOffset.top + jQuery(ctrl).outerHeight(false); 181 suggestArea.offset({ top : ctrlTop, left : ctrlLeft }); 182 183 var paddingWidth = parseInt(suggestArea.css('margin-left')) 184 + parseInt(suggestArea.css('margin-right')) 185 + parseInt(suggestArea.css('padding-left')) 186 + parseInt(suggestArea.css('padding-right')); 187 var width = jQuery(ctrl).outerWidth(true) - paddingWidth; 188 suggestArea.css("min-width",width); 189 190 // ãµã¸ã§ã¹ãã表示ãããã©ã¼ã ãä¿æ 191 searchSuggestCurrentForm = inputForm; 192 193 // ãµã¸ã§ã¹ãã¨ãªã¢è¡¨ç¤º 194 suggestArea.show(); 195 196} 197 198// ãµã¸ã§ã¹ãã¨ãªã¢é表示å¤å®ã¨é表示å¦çå¼ã³åºã 199function hideSearchSuggest(e) { 200 201 var suggestArea = jQuery(searchSuggestAreaSelector); 202 if (suggestArea.size()) { 203 var x = e.clientX + jQuery(window).scrollLeft(); 204 var y = e.clientY + jQuery(window).scrollTop(); 205 var ctrlOffset = suggestArea.offset(); 206 var startX = ctrlOffset.left; 207 var endX = startX + suggestArea.outerWidth(true); 208 var startY = ctrlOffset.top; 209 var endY = startY + suggestArea.outerHeight(true); 210 211 if (x < startX || x > endX || y < startY || y > endY) { 212 removeSearchSuggest(); 213 } 214 } 215} 216 217 218// ãµã¸ã§ã¹ãã¨ãªã¢é表示å¦ç 219function removeSearchSuggest() { 220 jQuery(searchSuggestAreaSelector).remove(); 221 searchSuggestCurrentForm = null; 222} 223
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.