[ JQuery ] [ Ajaxでテスト01 ] [ Ajaxでテスト02 ]
Ajaxでテスト05
- 2013-11-25,2013-12-03 〜
Ajaxでテスト03の郵便番号入力部分にmaskedinputを使って数字7桁の入力に制限してみます。
これを変える事で、他の部分で調整した方がよい箇所が出ます。
まず、以下の様にしてライブラリを読み込む必要があります。
<script src="./jquery/js/jquery.maskedinput.js"></script>
※ jquery.jsを利用する設定がスクリプトのサンプルに記載されていませんが、省略してあり、実際は必要です。
サンプル
郵便番号のCSVデータは、郵便局のホームページからダウンロードした全国の郵便番号データを利用しています。
データを検索するPHPコード
<?php
$code = $_GET['code'];
$code =preg_replace('/\W/','', $code);
// データには半角数字が7個連続するのは現在の郵便番号のみなので
// そのままgrepで検索する事でデータを探せる
$cmd = "grep {$code} ken_all.csv";
$r = exec($cmd);
// 元のデータはシフトJISなので取りあえずUTF-8に変換
// データのサンプル
// 0 1 2 3 4 5 6 7 8
// 01101,"064 ","0640941","ホツカイドウ","サツポロシチユウオウク","アサヒガオカ","北海道","札幌市中央区","旭ケ丘",0,0,1,0,0,0
$r = mb_convert_encoding($r, "UTF-8", "SJIS");
$r = str_replace("\"", "", $r);
$r = str_replace(" ", "", $r);
$r = str_replace(",", "\t", $r);
print $r;
?>
実行結果
コードの部分に郵便番号7桁を半角数字で入力します。該当するものがあれば漢字の住所とカナのよみを表示します。
使い道はあまりないと思いますが、テキストデータ12万行程をgrepで検索しているわけです。
エラーの処理が無いのでシンプルなスクリプトです。
この部分のソース
<script>
$(function() {
html_meisai();
《変更箇所1》 // 2013-12-03
$("*[id^=id1-]").keyup(function() {
// alert(this.id);
id12 = this.id.split('-');
code = $("#"+this.id).val();
《変更箇所2》 // 2013-12-03
if (code.length==7 || code.length==0 ) {
if (code != '') {
kekka = search_code(code);
// alert("Row:"+id12[0]+" / Code:"+code+" / Result:"+kekka);
fld = kekka.split("\t");
$("#id2-"+id12[1]).val(fld[6]+fld[7]+fld[8]);
$("#id3-"+id12[1]).val(fld[3]+fld[4]+fld[5]);
} else {
$("#id2-"+id12[1]).val("");
$("#id3-"+id12[1]).val("");
}
}
});
});
// ---------------------------------------------
function html_meisai() {
html = "<table>\n";
html += "<tr>";
html += "<th>行</th>";
html += "<th>コード</th>";
html += "<th>住所</th>";
html += "<th>よみ</th>";
html += "</tr>";
for (i=0; i<10; i++) {
html += "<tr>";
html += "<td class='r0'>"+(i+1)+"</td>"; // 行
html += inp_text("id1-"+i,"7","r1"); // コード
html += inp_text("id2-"+i,"30","r2"); // 住所
html += inp_text("id3-"+i,"30","r3"); // よみ
html += "</tr>\n";
}
html += "</table>\n";
$("#meisai").html(html);
}
// ---------------------------------------------
function inp_text(id, size, classN) {
t = '<td class="'+classN+'"><input type="text" id="'+id
+'" size="'+size+'" class="'+classN+'"></td>';
return t;
}
// ---------------------------------------------
function search_code(code) {
var csv = $.ajax({
url: "sample_data/testcsv005.php?code="+code,
async: false
}).responseText;
return csv;
}
</script>
<div id="meisai"></div>
さて、本題に少し入ります。
結果をダイアログに表示します。
→ Ajaxでテスト04