GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。 NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは 別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
117 lines
3.1 KiB
JavaScript
117 lines
3.1 KiB
JavaScript
/*
|
|
* jQuery.zip2addr
|
|
*
|
|
* Copyright 2010, Kotaro Kokubo a.k.a kotarok kotaro@nodot.jp
|
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
*
|
|
* https://github.com/kotarok/jQuery.zip2addr
|
|
*
|
|
* Depends:
|
|
* jQuery 1.4 or above
|
|
*/
|
|
|
|
$.fn.zip2addr = function (target) {
|
|
var c = {
|
|
api: 'https://www.google.com/transliterate?langpair=ja-Hira|ja&jsonp=?',
|
|
prefectureToken: '(東京都|道|府|県)',
|
|
zipDelimiter: '-'
|
|
}
|
|
|
|
var cache = $.fn.zip2addr.cache;
|
|
|
|
var getAddr = function (zip, callback) {
|
|
$.getJSON(c.api, {
|
|
'text': zip
|
|
},
|
|
function (json) {
|
|
if (RegExp(c.prefectureToken).test(json[0][1][0])) {
|
|
callback(json[0][1][0].replace(RegExp('(.*?' + c.prefectureToken + ')(.+)'), function (a, b, c, d) {
|
|
return [b, d]
|
|
}))
|
|
}
|
|
}
|
|
)
|
|
}
|
|
|
|
var fillAddr = (function () {
|
|
if (typeof target == 'object' && target.pref) {
|
|
return function (addr) {
|
|
var addrs = addr.split(',');
|
|
if (addrs) {
|
|
if (!RegExp(addrs[1]).test($(target.addr).val())) {
|
|
$(target.pref).val(addrs[0]);
|
|
$(target.addr).val(addrs[1]);
|
|
}
|
|
} else if (!RegExp(addrs[1]).test($(target.addr).val())) {
|
|
$(target.pref).add(target.addr).val('');
|
|
}
|
|
}
|
|
} else {
|
|
return function (addr) {
|
|
var addrStr = addr.replace(',', '');
|
|
var addrField = target.addr || target;
|
|
if (addrStr) {
|
|
if (!RegExp(addrStr).test($(addrField).val())) {
|
|
$(addrField).val(addrStr);
|
|
}
|
|
} else if (!RegExp(addrStr).test($(addrField).val())) {
|
|
$(addrField).val('');
|
|
}
|
|
}
|
|
}
|
|
})()
|
|
|
|
//From http://liosk.blog103.fc2.com/blog-entry-72.html
|
|
var fascii2ascii = (function () {
|
|
var pattern = /[\uFF01-\uFF5E]/g,
|
|
replace = function (m) {
|
|
return String.fromCharCode(m.charCodeAt() - 0xFEE0);
|
|
};
|
|
return function (s) {
|
|
return s.replace(pattern, replace);
|
|
};
|
|
})();
|
|
|
|
var check = function (_val) {
|
|
var val = fascii2ascii(_val).replace(/\D/g, '');
|
|
if (val.length == 7) {
|
|
if (cache[val] == undefined) {
|
|
getAddr(val.replace(/(\d\d\d)(\d\d\d\d)/, '$1-$2'), function (json) {
|
|
cache[val] = json;
|
|
fillAddr(json);
|
|
})
|
|
} else {
|
|
fillAddr(cache[val]);
|
|
}
|
|
}
|
|
}
|
|
|
|
this.each(function () {
|
|
var elem = $(this);
|
|
if (typeof target == 'object' && target.zip2) {
|
|
elem.add($(target.zip2))
|
|
.bind('keyup.zip2addr change.zip2addr', function () {
|
|
check(elem.val() + '' + $(target.zip2).val())
|
|
})
|
|
.bind('blur.zip2addr', function () {
|
|
$(this).val(function () {
|
|
return fascii2ascii($(this).val())
|
|
})
|
|
})
|
|
} else {
|
|
elem
|
|
.bind('keyup.zip2addr change.zip2addr', function () {
|
|
check(elem.val())
|
|
})
|
|
.bind('blur.zip2addr', function () {
|
|
$(this).val(function () {
|
|
return fascii2ascii($(this).val()).replace(/\D/g, '').replace(/(\d\d\d)(\d\d\d\d)/, '$1' + c.zipDelimiter + '$2')
|
|
})
|
|
})
|
|
}
|
|
});
|
|
|
|
return this;
|
|
};
|
|
|
|
$.fn.zip2addr.cache = {}; |