現在修正中のページで、郵便番号から住所を自動でセットする処理を追加してほしいということだったので、以前使ったことのある Kawasaki Yusukeさん作成の AjaxZip 2.0(ajaxzip2)を使おうと思ったんだけど、どうもうまくいかない。
<script type="text/javascript" src="js/ajaxzip2/prototype.js"></script><script type="text/javascript" src="js/ajaxzip2/ajaxzip2.js" charset="UTF-8"></script>
と JavaScript を設定しても上手くいかない。
InternetExplorer の開発者ツールで見ると、prototype.js を読み込んだ時点で、
SCRIPT438: オブジェクトは 'dispatchEvent' プロパティまたはメソッドをサポートしていません。
のエラーが発生している。
別の JavaScript で jQuery を使用しているので、その辺とバッティングしてるのかな?
jQuery 使ってるスクリプトをコメントにしたらエラー消えるからそうなんだろうなあ。時間がないので、細かいところまでは追っかけなかったのだが、さすがにこのために jQuery 使わない形に直すの大変なので、別の方法を取ることにした。
てか、以前は prototype.js と jQuery で覇権を争っていたのだが、勝負がついてしまったな。
prototype.js 使うために jQuery をどうこうしようなんて思わないもんな。
ということで探してみると、株式会社人気組さんが ajaxzip3 という、ajaxzip2 の後継ライブラリを作られていた。
prototype.js や JQuery を使ってないので、バッティング問題もなさそうだ。
とりあえず、
<script type="text/javascript" src="https://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3-https.js" charset="UTF-8"></script>
と指定すれば、ajaxzip2 とほぼ同様の形で使用出来る。
ただ、郵便番号を 3桁+4桁で入力した場合の、4桁番号の引数の位置が変わっているので注意。
(例)<input type="text" size="3" name="yubin1" />-<input type="text" size="4" name="yubin2" />・ajaxzip2onClick="AjaxZip2.zip2addr('yubin1', 'ken', 'shichoson', 'yubin2', 'banchi');"・ajaxzip3onClick="AjaxZip3.zip2addr('yubin1', 'yubin2', 'ken', 'shichoson', 'banchi');"
こんな感じ。
いやあ、時間がないのに、ajaxzip2 を改造せんといかんのかとゾッとしてたんだけど助かった。
株式会社人気組さんに感謝。