จากเรื่องที่แล้ว ฐานข้อมูลระดับจังหวัด อำเภอ ตำบล และ ใส่ฟิลเตอร์ให้ select box มาต่อด้วยการสร้างฟอร์ม ไปใช้ส่งข้อมูล
เป็นธรรมดาที่การกรอกข้อมูลส่วนตัว ประวัติต่างๆ อาจจะต้องการหลายที่อยู่ เช่น ที่อยู่ตามทะเบียนบ้าน ที่อยู่ปัจจุบัน ที่ทำงาน ถ้าต้องมากำหนดตัวกรองให้ select box ที่ละตัวก็เสียเวลา แก้ได้โดยเปลี่ยนไปใช้ class แทน id และใช้ attribute data- แทนแต่ละกลุ่ม และใช้ ajax ดึงข้อมูลมาทำ chained เวลาที่เปลี่ยนตัเลือกในตัวแม่ ให้ใช้เอแจ็กซ์ดึงข้อมูลที่เกี่ยวข้องมาแสดง update แทนตัวเลือก option ตัวลูกที่มีอยู่เดิม
[code language=”php”]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>AJAX jQuery.chosen By Pitt Phunsanit</title>
<link href="chosen/chosen.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<fieldset>
<legend>บ้าน</legend>
<select name="home_province" class="areasProvince chosen-select" data-area="home" style="width:200px;">
<option value="64">กระบี่</option>
<option value="1">กรุงเทพมหานคร</option>
<option value="56">กาญจนบุรี</option>
<option value="34">กาฬสินธุ์</option>
<option value="49">กำแพงเพชร</option>
<option value="28">ขอนแก่น</option>
<option value="13">จันทบุรี</option>
<option value="15">ฉะเชิงเทรา</option>
<option value="11">ชลบุรี</option>
<option value="9">ชัยนาท</option>
<option value="25">ชัยภูมิ</option>
<option value="69">ชุมพร</option>
<option value="45">เชียงราย</option>
<option value="38">เชียงใหม่</option>
<option value="72">ตรัง</option>
<option value="14">ตราด</option>
<option value="50">ตาก</option>
<option value="17">นครนายก</option>
<option value="58">นครปฐม</option>
<option value="36">นครพนม</option>
<option value="19">นครราชสีมา</option>
<option value="63">นครศรีธรรมราช</option>
<option value="47">นครสวรรค์</option>
<option value="3">นนทบุรี</option>
<option value="76">นราธิวาส</option>
<option value="43">น่าน</option>
<option value="77">บึงกาฬ</option>
<option value="20">บุรีรัมย์</option>
<option value="4">ปทุมธานี</option>
<option value="62">ประจวบคีรีขันธ์</option>
<option value="16">ปราจีนบุรี</option>
<option value="74">ปัตตานี</option>
<option value="5">พระนครศรีอยุธยา</option>
<option value="44">พะเยา</option>
<option value="65">พังงา</option>
<option value="73">พัทลุง</option>
<option value="53">พิจิตร</option>
<option value="52">พิษณุโลก</option>
<option value="61">เพชรบุรี</option>
<option value="54">เพชรบูรณ์</option>
<option value="42">แพร่</option>
<option value="66">ภูเก็ต</option>
<option value="32">มหาสารคาม</option>
<option value="37">มุกดาหาร</option>
<option value="46">แม่ฮ่องสอน</option>
<option value="24">ยโสธร</option>
<option value="75">ยะลา</option>
<option value="33">ร้อยเอ็ด</option>
<option value="68">ระนอง</option>
<option value="12">ระยอง</option>
<option value="55">ราชบุรี</option>
<option value="7">ลพบุรี</option>
<option value="40">ลำปาง</option>
<option value="39">ลำพูน</option>
<option value="30">เลย</option>
<option value="22">ศรีสะเกษ</option>
<option value="35">สกลนคร</option>
<option value="70">สงขลา</option>
<option value="71">สตูล</option>
<option value="2">สมุทรปราการ</option>
<option value="60">สมุทรสงคราม</option>
<option value="59">สมุทรสาคร</option>
<option value="18">สระแก้ว</option>
<option value="10">สระบุรี</option>
<option value="8">สิงห์บุรี</option>
<option value="51">สุโขทัย</option>
<option value="57">สุพรรณบุรี</option>
<option value="67">สุราษฎร์ธานี</option>
<option value="21">สุรินทร์</option>
<option value="31">หนองคาย</option>
<option value="27">หนองบัวลำภู</option>
<option value="6">อ่างทอง</option>
<option value="26">อำนาจเจริญ</option>
<option value="29">อุดรธานี</option>
<option value="41">อุตรดิตถ์</option>
<option value="48">อุทัยธานี</option>
<option value="23">อุบลราชธานี</option>
</select>
<select name="home_city" class="areasCity chosen-select" data-area="home" style="width:200px;">
</select>
</fieldset>
<fieldset>
<legend>ที่ทำงาน</legend>
<select name="office_province" class="areasProvince chosen-select" data-area="office" style="width:200px;">
<option value="64">กระบี่</option>
<option value="1">กรุงเทพมหานคร</option>
<option value="56">กาญจนบุรี</option>
<option value="34">กาฬสินธุ์</option>
<option value="49">กำแพงเพชร</option>
<option value="28">ขอนแก่น</option>
<option value="13">จันทบุรี</option>
<option value="15">ฉะเชิงเทรา</option>
<option value="11">ชลบุรี</option>
<option value="9">ชัยนาท</option>
<option value="25">ชัยภูมิ</option>
<option value="69">ชุมพร</option>
<option value="45">เชียงราย</option>
<option value="38">เชียงใหม่</option>
<option value="72">ตรัง</option>
<option value="14">ตราด</option>
<option value="50">ตาก</option>
<option value="17">นครนายก</option>
<option value="58">นครปฐม</option>
<option value="36">นครพนม</option>
<option value="19">นครราชสีมา</option>
<option value="63">นครศรีธรรมราช</option>
<option value="47">นครสวรรค์</option>
<option value="3">นนทบุรี</option>
<option value="76">นราธิวาส</option>
<option value="43">น่าน</option>
<option value="77">บึงกาฬ</option>
<option value="20">บุรีรัมย์</option>
<option value="4">ปทุมธานี</option>
<option value="62">ประจวบคีรีขันธ์</option>
<option value="16">ปราจีนบุรี</option>
<option value="74">ปัตตานี</option>
<option value="5">พระนครศรีอยุธยา</option>
<option value="44">พะเยา</option>
<option value="65">พังงา</option>
<option value="73">พัทลุง</option>
<option value="53">พิจิตร</option>
<option value="52">พิษณุโลก</option>
<option value="61">เพชรบุรี</option>
<option value="54">เพชรบูรณ์</option>
<option value="42">แพร่</option>
<option value="66">ภูเก็ต</option>
<option value="32">มหาสารคาม</option>
<option value="37">มุกดาหาร</option>
<option value="46">แม่ฮ่องสอน</option>
<option value="24">ยโสธร</option>
<option value="75">ยะลา</option>
<option value="33">ร้อยเอ็ด</option>
<option value="68">ระนอง</option>
<option value="12">ระยอง</option>
<option value="55">ราชบุรี</option>
<option value="7">ลพบุรี</option>
<option value="40">ลำปาง</option>
<option value="39">ลำพูน</option>
<option value="30">เลย</option>
<option value="22">ศรีสะเกษ</option>
<option value="35">สกลนคร</option>
<option value="70">สงขลา</option>
<option value="71">สตูล</option>
<option value="2">สมุทรปราการ</option>
<option value="60">สมุทรสงคราม</option>
<option value="59">สมุทรสาคร</option>
<option value="18">สระแก้ว</option>
<option value="10">สระบุรี</option>
<option value="8">สิงห์บุรี</option>
<option value="51">สุโขทัย</option>
<option value="57">สุพรรณบุรี</option>
<option value="67">สุราษฎร์ธานี</option>
<option value="21">สุรินทร์</option>
<option value="31">หนองคาย</option>
<option value="27">หนองบัวลำภู</option>
<option value="6">อ่างทอง</option>
<option value="26">อำนาจเจริญ</option>
<option value="29">อุดรธานี</option>
<option value="41">อุตรดิตถ์</option>
<option value="48">อุทัยธานี</option>
<option value="23">อุบลราชธานี</option>
</select>
<select name="office_city" class="areasCity chosen-select" data-area="office" style="width:200px;">
</select>
</fieldset>
<script src="../jQuery/jquery-2.1.3.min.js"></script>
<script src="chosen/chosen.jquery.min.js"></script>
<script>
$(function(){
/* select box filter */
$(‘.chosen-select’).chosen();
$(‘.areasProvince’).chosen().change(function(){
child = $(‘.areasCity[data-area="’+$(this).data(‘area’)+’"]’);
html = Array(‘<option value="">–Select–</option>’);
parent_id = $(this).val();
if(parent_id == ”){
child.html(html)
}
else
{
$.ajax({
"cache" : true,
"dataType" : "json",
"success" : function(datas){
$.each(datas, function(key, item){
html.push(‘<option value="’+item.value+’">’+item.text+'</option>’);
});
child.html(html);
child.trigger(‘chosen:updated’);
},
"url" : "thailandJSON.php?subdivisions=amphur&parent_id="+parent_id
});
}
});
})
</script>
</body>
</html>
[/code]
About the author