2009-02-24 23:38 追記
不具合を修正したものを こちらのエントリ で公開しました.
不具合を修正したものを こちらのエントリ で公開しました.
はじめに
住所入力系のフォームを設置するときにいつもお世話になっております.
しかし現状では,住所が見つかった,住所が見つからなかった,入力した郵便番号がおかしい,などの結果をフックするためのしくみがないように思えます.(フックするってこういう使い方でいいのかな?)(私の使い方が悪いだけでしたらゴメンナサイ.)
そんなわけで...
CodeRepos で 開発中のソースコード を公開しています。
AjaxZip 2.0 – Ajax郵便番号→住所自動入力フォーム(CGI不要版)
CodeReposにある同ライブラリのソースコードを拝借し,検索処理後にコールバック関数を実行できるようなしくみにしてみました.
使い方
個人的によく使う次の形を想定しています.
<form> 郵便番号:<input type="text" name="zipcode" value="" /> <input type="button" value="住所検索" /> 住所: <input type="text" name="address" value="" /> </form>
従来
ご存じのとおり,次のような1行を「住所検索」なボタンのクリックイベントに記述するだけでOKですね.
AjaxZip2.zip2addr( 'zipcode', 'address', 'address', null, null, null );
今回
まず,検索処理後の振る舞いを,コールバック関数として定義します.
var callback = function( res ) { switch( res.result ) { // 対応する住所が見つかった case AjaxZip2.RESULT.FOUND: alert( res.data ); break; // 対応する住所が見つからなかった case AjaxZip2.RESULT.NOT_FOUND: alert( '該当なし' ); break; // 郵便番号の値が空 case AjaxZip2.RESULT.NULL: alert( '郵便番号が空' ); break; // 郵便番号の書式に誤りがある case AjaxZip2.RESULT.INVALID_FORMAT: alert( '郵便番号に誤り' ); break; // 郵便番号の値が前回検索時と同じ case AjaxZip2.RESULT.SAME_AS_PREV: alert( '前回の検索と同じ' ); break; } };
そして,定義したコールバック関数名前を,いちばん最後に引数として追加します.
AjaxZip2.zip2addr( 'zipcode', 'address', 'address', null, null, null, callback );
これでOKです.
なお,最後の引数を指定しなかったり,コールバック関数が undefined だったりした場合は,従来の動作と変わりありません.
ソースコード
オリジナルとの差分であるパッチと,それを実際にあてたものを,CodeReposにコミットしておきました.オリジナルが置いてあるディレクトリに branches/patch-20090212 というディレクトリを作成し,その中に置いてあります.
- /lang/javascript/ajaxzip2/branches/patch-20090212 – CodeRepos::Share – Trac
- share – Revision 29990: /lang/javascript/ajaxzip2/branches/patch-20090212
おわりに
以上,ajaxzip2 をちょこっとだけ便利(と個人的には思ってます)にすべく,ソースコードを修正してみました.
インタラクティヴになってますかね...
