cluchのブログ

業務で使ったり、学んでいる知識を忘れないために覚書として使っていく予定。

郵便番号による住所検索

やりたいこと

  • 郵便番号を入力して住所を検索したい


使用したAPI

  • on( events [, selector] [, data], handler(eventObject))
    • マッチした要素に任意のイベントをバインドします。
  • match
    • 文字列中で一致するものを検索する String のメソッド
    • 結果情報の配列を返します。
    • マッチしない場合は null を返します。
  • jQuery.ajax
    • HTTP通信でページを読み込みます。


正規表現

  • ^
    • 入力の先頭にマッチします。
  • $
    • 入力の末尾にマッチします。
  • \d
    • 数字にマッチします。
    • [0-9] と同等です。
  • {n}
    • n には正の整数が入ります。
    • 直前の文字がちょうど n 回出現するものにマッチします。

ソース

.html

<h1>郵便番号検索</h1>
<p>
  <span class="label"></span>
  <input type="text" id="zipcode1" name="zipcode1" size="3" maxlength="3">
  <span>-</span>
  <input type="text" id="zipcode2" name="zipcode2" size="4" maxlength="4">
</p>

.js

$(function() {
	   
	var lookup = function() {
		var z1 = $("#zipcode1").val();
	    var z2 = $("#zipcode2").val();
	    if (!z1.match(/^\d{3}$/) || !z2.match(/^\d{4}$/)) {
	      return;
		}
		$.ajax({
			url: "http://api.aoikujira.com/zip/json/" + z1 + z2,
			type: "GET",
			dataType: "json",
			success: function(res) {
				$("#address").val(res.state + res.city + res.address);
			},
			error: function(xhr, textStatus, errorThrown) {
				alert('Error!');
			}
		});
	};
	   
	$("#zipcode1").on("keyup", lookup);
	$("#zipcode2").on("keyup", lookup);
});