1/** 2 * éµä¾¿çªå·ã®æ¤ç´¢å¦ç 3 * views/js/zip_search.blade.php 4 */ 5window.addEventListener('load', function () {//HTMLèªã¿è¾¼ã¿å®äºå¾ã«å®è¡ 6 //éµä¾¿çªå·ï¼ç³ãè¾¼ã¿è ï¼ã®æ¤ç´¢ 7 const zip_code_input = document.getElementById('address1'); 8 const zip_code_btn = document.getElementById('zip_code_search'); 9 10 if (zip_code_btn && zip_code_input != null) { 11 zip_code_btn.addEventListener('click', function () { 12 13 let api = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode='; 14 let error = document.getElementById('error'); 15 let zip_code = document.getElementById('zip_code'); 16 let address1 = document.getElementById('address1'); 17 let prefectures = document.getElementById('prefectures'); 18 let city = document.getElementById('city'); 19 let param = zip_code.value.replace('-', ''); 20 let url = api + param; 21 22 let params = { 'zip_code': zip_code, 'city': city, 'address1': address1, 'prefectures': prefectures }; 23 ajax_jsonp(url, display_message, params); 24 25 }, false); 26 } 27 28 //éµä¾¿çªå·ï¼éãå ï¼ã®æ¤ç´¢ 29 const delivery_zip_code_input = document.getElementById('address1_delivery'); 30 const delivery_zip_code_btn = document.getElementById('zip_code_delivery_search'); 31 if (delivery_zip_code_btn && delivery_zip_code_input != null) { 32 delivery_zip_code_btn.addEventListener('click', function () { 33 34 let api = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode='; 35 let error = document.getElementById('error'); 36 let zip_code = document.getElementById('zip_code_delivery'); 37 let address1 = document.getElementById('address1_delivery'); 38 let prefectures = document.getElementById('prefectures_delivery'); 39 let city = document.getElementById('city_delivery'); 40 let param = zip_code.value.replace('-', ''); 41 let url = api + param; 42 43 let params = { 'zip_code': zip_code, 'city': city, 'address1': address1, 'prefectures': prefectures }; 44 ajax_jsonp(url, display_message, params); 45 46 }, false); 47 } 48 49}); 50 51/** 52 * zipcode 53 */ 54function get_address_from_zip_code(zip_code_name, prefectures_name, address1_name, city_name) { 55 56 let api = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode='; 57 let error = document.getElementById('error'); 58 let zip_code = document.getElementById(zip_code_name); 59 let address1 = document.getElementById(address1_name); 60 let prefectures = document.getElementById(prefectures_name); 61 let city = city_name ? document.getElementById(city_name) : null; 62 let param = zip_code.value.replace('-', ''); 63 let url = api + param; 64 65 let params = { 'zip_code': zip_code, 'city': city, 'address1': address1, 'prefectures': prefectures }; 66 ajax_jsonp(url, display_message, params); 67 68} 69 70/** 71 * 1ä»¶åã®ä½æçµæããã©ã¼ã ãã£ã¼ã«ãã«é©ç¨ãã 72 * @param {Object} result - zipcloud ã® results é åã®1è¦ç´ 73 * @param {Object} params - display_message ã«æ¸¡ããã params ãªãã¸ã§ã¯ã 74 */ 75function applyZipResult(result, params) { 76 if (params['prefectures']) { 77 // é½éåºçã®ã»ããï¼address1ï¼ 78 var prefectures = params['prefectures']; 79 for (let i = 0; i < prefectures.length; i++) { 80 if (result.address1 == prefectures[i].value) { 81 params['prefectures'].options[i].selected = true; 82 } 83 } 84 } 85 86 if (params['city']) { 87 // å¸åºçºæã®ã»ããï¼address2 = å¸åºçºæï¼ 88 // params['city'] ã falsyï¼nullï¼ã®å ´åã¯ã¹ãããï¼customer_info ã®æ¢åæåè¸è¥²ï¼ 89 params['city'].value = result.address2; 90 } 91 92 if (params['address1']) { 93 // çºåã®ã»ããï¼address3 = çºåï¼ 94 params['address1'].value = result.address3; 95 } 96} 97 98/** 99 * zip_code å ¥åæ¬ã®ç´å¾ã«ããåè£ãã«ãã¦ã³ãåé¤ãã 100 * zip-results-selector ã¯ã©ã¹ãæã¤è¦ç´ ã®ã¿åé¤ããä»ã® sibling ã¯ä¸ååé¤ããªã 101 * @param {Element} zipCodeElement - params['zip_code'] ã® DOM è¦ç´ 102 */ 103function removeZipResultsSelector(zipCodeElement) { 104 if (!zipCodeElement) { 105 return; 106 } 107 var next = zipCodeElement.nextElementSibling; 108 if (next && next.classList.contains('zip-results-selector')) { 109 next.parentNode.removeChild(next); 110 } 111} 112 113//ajaxã®æ»ãå¤ã使ã£ãå¦ç 114var display_message = function (data, params) { 115 116 //追å ã¨ã©ã¼ã¡ãã»ã¼ã¸ãä¸åº¦åé¤ 117 var elems = document.getElementsByClassName('zip-add-message'); 118 for (var i in elems) { 119 var e = elems[0]; 120 if (e) { 121 e.parentNode.removeChild(e); 122 } 123 } 124 //ã¨ã©ã¼è¡¨ç¤ºãè§£é¤ 125 params['zip_code'].classList.remove("input-error"); 126 127 // å ¨åå²å ±é: éå»ã®åè£ãã«ãã¦ã³ãåé¤ï¼åæ¤ç´¢æã®éè¤é²æ¢ï¼ 128 removeZipResultsSelector(params['zip_code']); 129 130 //éµä¾¿çªå·ã«ã¨ã©ã¼ãããå ´å 131 if (data.message) { 132 133 // 追å ããè¦ç´ ã使ãã¾ã 134 var newContent = '<div class="error-message add-message zip-add-message">' + data.message + '</div>'; 135 params['zip_code'].insertAdjacentHTML('beforebegin', newContent); 136 params['zip_code'].classList.add("input-error"); 137 138 }
139 //æ¤ç´¢ãã¼ã¿ãåå¨ããªãå ´å 140 if (data.results == null) { 141 142 // 追å ããè¦ç´ ã使ãã¾ã 143 var newContent = '<div class="error-message add-message zip-add-message">å ¥åããéµä¾¿çªå·ã«å½ã¦ã¯ã¾ã使ãåå¨ãã¾ããã</div>'; 144 params['zip_code'].insertAdjacentHTML('beforebegin', newContent); 145 params['zip_code'].classList.add("input-error"); 146 147 } else { 148 149 // 1ä»¶ç®ããã£ã¼ã«ãã«åæ ï¼åä¸ã»è¤æ°ããããå ±éï¼ 150 applyZipResult(data.results[0], params); 151 152 // è¤æ°çµææ: åè£ãã«ãã¦ã³ãçæã㦠zip_code ç´å¾ã«æ¿å ¥ 153 if (data.results.length >= 2) { 154 try { 155 var selectElement = document.createElement('select'); 156 selectElement.classList.add('zip-results-selector'); 157 158 for (let idx = 0; idx < data.results.length; idx++) { 159 var option = document.createElement('option'); 160 option.value = String(idx); 161 // XSS 対ç: textContent ã§ã»ããï¼innerHTML ç¦æ¢ï¼ 162 option.textContent = data.results[idx].address2 + data.results[idx].address3; 163 if (idx === 0) { 164 option.selected = true; 165 } 166 selectElement.appendChild(option); 167 } 168 169 // ãã«ãã¦ã³å¤æ´æã«å¯¾å¿ãã使ããã£ã¼ã«ãã¸åæ 170 selectElement.addEventListener('change', function () { 171 var selectedIdx = Number(this.value); 172 applyZipResult(data.results[selectedIdx], params); 173 }); 174 175 params['zip_code'].insertAdjacentElement('afterend', selectElement); 176 } catch (e) { 177 console.warn('[zip-search] åè£ãã«ãã¦ã³ã®çæã«å¤±æãã¾ãã:', e); 178 // 1ä»¶ç®ã®åæ 㯠try ã®åã«å®äºæ¸ã¿ã®ããããã©ã¼ã å ¥åã¯ç¶ç¶å¯è½ 179 } 180 } 181 } 182}
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.