PageSourceSearch

https://honeys.co.jp/cms/js/forcms_lookupzip.js

js honeys.co.jp collected 2026-10-02 17:28:10 UTC 10,824 bytes, 234 lines download raw bytes

1/// <reference path="jquery.js"/>
2
3// default charsetの設定
4jQuery.ajaxSetup({ contentType: 'application/x-www-form-urlencoded; charset=utf-8' });
5
6// util
7function _ecUtil(lookupzipJsonUri) {
8    // ダブルクリック禁止処理
9    this.ignoreDblClickFlag = null;
10
11    // 郵便番号検索
12    var timerId_lookupzip_ = null;
13    var zipcache_lookupzip_ = '';
14
15    // 全角半角変換
16    this.hanMap = {};
17    this.zenMap = {
18        'a': 'a', 'b': 'b', 'c': 'c', 'd': 'd', 'e': 'e', 'f': 'f', 'g': 'g', 'h': 'h', 'i': 'i', 'j': 'j',
19        'k': 'k', 'l': 'l', 'm': 'm', 'n': 'n', 'o': 'o', 'p': 'p', 'q': 'q', 'r': 'r', 's': 's', 't': 't',
20        'u': 'u', 'v': 'v', 'w': 'w', 'x': 'x', 'y': 'y', 'z': 'z', 'A': 'A', 'B': 'B', 'C': 'C', 'D': 'D',
21        'E': 'E', 'F': 'F', 'G': 'G', 'H': 'H', 'I': 'I', 'J': 'J', 'K': 'K', 'L': 'L', 'M': 'M', 'N': 'N',
22        'O': 'O', 'P': 'P', 'Q': 'Q', 'R': 'R', 'S': 'S', 'T': 'T', 'U': 'U', 'V': 'V', 'W': 'W', 'X': 'X',
23        'Y': 'Y', 'Z': 'Z', '0': '0', '1': '1', '2': '2', '3': '3', '4': '4', '5': '5', '6': '6', '7': '7',
24        '8': '8', '9': '9', '!': '!', '@': '@', '#': '#', '$': '$', '%': '%', '^': '^', '&': '&', '*': '*',
25        '(': '(', ')': ')', '_': '_', '+': '+', '|': '|', ' ̄': '~', '-': '-', '=': '=', '¥': '\\', '`': '`',
26        '{': '{', '}': '}', '[': '[', ']': ']', ':': ':', '”': '"', ';': ';', '’': '\'', '<': '<', '>': '>',
27        '?': '?', ',': ',', '.': '.', '/': '/', '。': '。', '「': '「', '」': '」', '、': '、', '・': '・', 'ヲ': 'ヲ',
28        'ァ': 'ァ', 'ィ': 'ィ', 'ゥ': 'ゥ', 'ェ': 'ェ', 'ォ': 'ォ', 'ャ': 'ャ', 'ュ': 'ュ', 'ョ': 'ョ', 'ッ': 'ッ', 'ー': 'ー',
29        'ア': 'ア', 'イ': 'イ', 'ウ': 'ウ', 'エ': 'エ', 'オ': 'オ', 'カ': 'カ', 'キ': 'キ', 'ク': 'ク', 'ケ': 'ケ', 'コ': 'コ',
30        'サ': 'サ', 'シ': 'シ', 'ス': 'ス', 'セ': 'セ', 'ソ': 'ソ', 'タ': 'タ', 'チ': 'チ', 'ツ': 'ツ', 'テ': 'テ', 'ト': 'ト',
31        'ナ': 'ナ', 'ニ': 'ニ', 'ヌ': 'ヌ', 'ネ': 'ネ', 'ノ': 'ノ', 'ハ': 'ハ', 'ヒ': 'ヒ', 'フ': 'フ', 'ヘ': 'ヘ', 'ホ': 'ホ',
32        'マ': 'マ', 'ミ': 'ミ', 'ム': 'ム', 'メ': 'メ', 'モ': 'モ', 'ヤ': 'ヤ', 'ユ': 'ユ', 'ヨ': 'ヨ', 'ラ': 'ラ', 'リ': 'リ',
33        'ル': 'ル', 'レ': 'レ', 'ロ': 'ロ', 'ワ': 'ワ', 'ン': 'ン', 'ガ': 'ガ', 'ギ': 'ギ', 'グ': 'グ', 'ゲ': 'ゲ', 'ゴ': 'ゴ',
34        'ザ': 'ザ', 'ジ': 'ジ', 'ズ': 'ズ', 'ゼ': 'ゼ', 'ゾ': 'ゾ', 'ダ': 'ダ', 'ヂ': 'ヂ', 'ヅ': 'ヅ', 'デ': 'デ', 'ド': 'ド',
35        'バ': 'バ', 'パ': 'パ', 'ビ': 'ビ', 'ピ': 'ピ', 'ブ': 'ブ', 'プ': 'プ', 'ベ': 'ベ', 'ペ': 'ペ', 'ボ': 'ボ', 'ポ': 'ポ',
36        'ヴ': 'ヴ', '゛': '゙', '゜': '゚', ' ': ' '
37    };
38
39    // 半角->全角マップ
40    for (var key in this.zenMap) {
41        if (!this.hanMap[this.zenMap[key]]) {
42            this.hanMap[this.zenMap[key]] = key;
43        }
44    }
45
46    // 半角<->全角変換
47    this.strConvert = function(obj, isHanToZen) {
48        var str = obj.value;
49        var conv = '';
50        var map = isHanToZen ? this.hanMap : this.zenMap;
51
52        for (var i = 0; i < str.length; i++) {
53            var tmp = '';
54            if (i < str.length - 1) {
55                tmp = str.substring(i, i + 2);
56            }
57            if (map[tmp]) {
58                conv += map[tmp];
59                i++;
60                continue;
61            } else {
62                tmp = str.substring(i, i + 1);
63                conv += map[tmp] ? map[tmp] : tmp;
64            }
65        }
66        obj.value = conv;
67        return true;
68    }
69
70    // ダブルクリック(連続ポスト)の制御
71    this.ignoreDblClick = function() {
72        if (this.ignoreDblClickFlag == null) {
73            this.ignoreDblClickFlag = 1;
74            return true;
75        } else {
76            return false;
77        }
78    }
79
80    // htmlタグの置き換え
81    this.htmlspecialchars = function(str) {
82        if (!str || str == '') { return ''; }
83        str = str.replace(/&/g, '&amp;');
84        str = str.replace(/"/g, '&quot;');
85        str = str.replace(/'/g, '&#039;');
86        str = str.replace(/</g, '&lt;');
87        str = str.replace(/>/g, '&gt;');
88        return str;
89    }
90
91    // 郵便番号検索
92    this.lookupZipInit = function (zip, pref, addr, addr2, cnt, offset) {
93        var defaultXOffset = 90;
94        var timerOffset = 300;
95
96        var zip_id = '#' + zip + cnt;
97        var pref_id = '#' + pref + cnt;
98        var addr_id = '#' + addr + cnt;
99        var addr2_id = '#' + addr2 + cnt;
100
101        offset = offset + defaultXOffset;
102        jQuery(zip_id).bind('keyup', function () {
103            jQuery('ul.ziplist_').remove();
104
105            if (zipcache_lookupzip_ == jQuery(zip_id).val()) {
106                zipcache_lookupzip_ = jQuery(zip_id).val();
107                return false;
108            }
109            zipcache_lookupzip_ = jQuery(zip_id).val();
110
111            clearTimeout(timerId_lookupzip_);
112            timerId_lookupzip_ = setTimeout(function () {
113                if (!jQuery(zip_id).val().match(/^[0-9]{3}[\-]{0,1}[0-9]{0,4}$/)) {
114                    return true;
115                }
116                jQuery.get(lookupzipJsonUri,
117                  {
118                      zip: jQuery(zip_id).val(),
119                      charset: 'UTF-8'
120                  },
121                function (data, status) {
122                    var of = jQuery(zip_id).offset();
123                    var ul = jQuery('<ul></ul>').addClass('ziplist_');
124                    ul.css('top', of.top);
125                    ul.css('left', of.left + offset);
126                    ul.css('z-index', "9999");
127                    var searchCount = 0;
128                    var tempzip, temppref, tempaddr, tempaddr2;
129                    jQuery.each(data, function (key, item) {
130                        searchCount++;
131                        tempzip = item.zip;
132                        temppref = item.pref;
133                        tempaddr = item.addr;
134                        tempaddr2 = item.addr2;
135
136                        var li = jQuery('<li>' + key + ' ' + item.pref + ' ' + item.addr + ' ' + item.addr2 + '</li>');
137                        li.bind('click', function () {
138                            jQuery(zip_id).val(item.zip);
139                            jQuery(pref_id).val(item.pref);
140                            jQuery(addr_id).val(item.addr);
141                            jQuery(addr2_id).val(item.addr2);
142                            jQuery('ul.ziplist_').remove();
143                            jQuery(zip_id).blur();
144                            jQuery(addr2_id).focus();
145                            return false;
146                        });
147                        li.bind('mouseover', function () { li.addClass('hover'); });
148                        li.bind('mouseleave', function () { li.removeClass('hover'); });
149                        ul.append(li);
150                    });
151
152                    if ((searchCount == 1) && (zipcache_lookupzip_.replace("-", "").length == 7)) {
153                        jQuery(zip_id).val(tempzip);
154                        jQuery(pref_id).val(temppref);
155                        jQuery(addr_id).val(tempaddr);
156                        jQuery(addr2_id).val(tempaddr2);
157                        jQuery('ul.ziplist_').remove();
158                        jQuery(zip_id).blur();
159                        jQuery(addr2_id).focus();
160                        return false;
161                    } else if (searchCount != 0) {
162                        jQuery(document.body).append(ul);
163                    }
164                }, 'json'
165                );
166            }, timerOffset);
167        });
168    }
169
170    // 汎用入力チェック
171    this.confirmInputCheck = function() {
172        // メールアドレスチェック
173        if (jQuery('#mail').size() == 1 && jQuery('#cmail').size() == 1) {
174            if (jQuery('#mail').val() != jQuery('#cmail').val()) {
175                alert('メールアドレスとメールアドレス(確認)が一致しません');
176                ecUtil.ignoreDblClickFlag = false;
177                return false;
178            }
179        }
180
181        // メールアドレスチェック2
182        if (jQuery('#newmail1').size() == 1 && jQuery('#newmail2').size() == 1) {
183            if (jQuery('#newmail1').val() != jQuery('#newmail2').val()) {
184                alert('メールアドレスとメールアドレス(確認)が一致しません');
185                ecUtil.ignoreDblClickFlag = false;
186                return false;
187            }
188        }
189
190        // パスワードチェック
191        if (jQuery('#pwd').size() == 1 && jQuery('#cpwd').size() == 1) {
192            if (jQuery('#pwd').val() != jQuery('#cpwd').val()) {
193                alert('入力されたパスワードと確認用パスワードが一致しません');
194                ecUtil.ignoreDblClickFlag = false;
195                return false;
196            }
197        }
198
199        // パスワードチェック2
200        if (jQuery('#npwd1').size() == 1 && jQuery('#npwd2').size() == 1) {
201            if (jQuery('#npwd1').val() != jQuery('#npwd2').val()) {
202                alert('入力されたパスワードと確認用パスワードが一致しません');
203                ecUtil.ignoreDblClickFlag = false;
204                return false;
205            }
206        }
207
208        // IDチェック
209        if (jQuery('#newid1').size() == 1 && jQuery('#newid2').size() == 1) {
210            if (jQuery('#newid1').val() != jQuery('#newid2').val()) {
211                alert('入力されたIDと確認用IDが一致しません');
212                ecUtil.ignoreDblClickFlag = false;
213                return false;
214            }
215        }
216        
217        // IDとPASSの不一致確認
218        if (jQuery('#uid').size() == 1 && jQuery('#pwd').size() == 1) {
219            if (jQuery('#uid').val() != "" && jQuery('#pwd').val() != "" ) {
220	            if (jQuery('#uid').val() == jQuery('#pwd').val()) {
221	                alert('会員IDとパスワードは別々のものを指定してください');
222	                jQuery('#pwd').val('');
223	                jQuery('#cpwd').val('');
224	                ecUtil.ignoreDblClickFlag = false;
225	                return false;
226	            }
227			}
228	    }
229        
230        return true;
231    }
232
233}
234

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.