การสร้าง Form เพื่อรับข้อมูลจากผู้ใช้งาน ในกรณีที่ต้องมีการเก็บข้อมูลในรูปแบบวันที่ เพื่อความสะดวกในการกรอกข้อมูล เราจะมา แนะนำการใช้งาน Jquery Ui DatePicker ซึ่ง ช่วยสำหรับการแสดงผล ปฏิทิน และสามารถปรับแต่งรูปแบบการแสดงผลได้
สามารถศึกษาเพิ่มเติมได้ที่ http://jqueryui.com/datepicker/
ตัวอย่างการใช้งาน
1.การเรียกใช้งาน DatePicker สร้างไฟล์ datepicker.php
การใช้งาน JqueryUi DatePicker
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Datepicker - Default functionality</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <script> $(function(){ $( ".show_date" ).datepicker({ dateFormat: "yy-mm-dd", //กำหนดรูปแบบวันที่ ปี - เดือน - วัน changeMonth: true, // กำหนดให้เปลี่ยนเดือนได้ changeYear:true, //กำหนดให้เปลี่ยนปีได้ dayNamesMin: [ "อา", "จ", "อ", "พ", "พฤ", "ศ", "ส" ],//กำหนดชื่อย่อของวัน เป็น ภาษาไทย monthNamesShort: [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม" ], }); }); </script> </head> <body> <p>Date: <input type="text" class="show_date"></p> </body> </html>
2.ตัวอย่าง การกำหนด Event Onclick ใน Datepicker
ปรับแก้ในส่วนของ Javascript เพิ่ม Method onSelect ในส่วนของ datepicker function ในไฟล์ datepicker.php
<script> $(function(){ $( ".show_date" ).datepicker({ dateFormat: "yy-mm-dd", //กำหนดรูปแบบวันที่ ปี - เดือน - วัน changeMonth: true, // กำหนดให้เปลี่ยนเดือนได้ changeYear:true, //กำหนดให้เปลี่ยนปีได้ dayNamesMin: [ "อา", "จ", "อ", "พ", "พฤ", "ศ", "ส" ],//กำหนดชื่อย่อของวัน เป็น ภาษาไทย monthNamesShort: [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม" ], //เพิ่ม Method onSelect เพื่อจับเหตุการณ์ขณะคลิก onSelect: function(select_date) { //alert date alert("คุณเลือกวันที่ : "+select_date); }, }); }); </script>
3.ตัวอย่าง การแสดง highlight แถบสี วันที่ ใน DatePicker
3.1 สร้างไฟล์ event.php สร้างตัวแปร array เก็บค่าวันที่ แล้วแปลงค่าตัวแปรให้เป็นในรูปแบบ JSON ด้วย function json_encode
ตัวอย่างไฟล์ event.php
<?php $year = date('Y'); $month = date('m'); //กำหนดค่า วันที่ ในตัวแปร array $event[] = $year."-".$month."-"."10"; $event[] = $year."-".$month."-"."12"; $event[] = $year."-".$month."-"."13"; $event[] = $year."-".$month."-"."15"; $event[] = $year."-".$month."-"."18"; $event[] = $year."-".$month."-"."19"; $event[] = $year."-".$month."-"."25"; //แปลงค่า Array ให้เป็นในรูปแบบ JSON echo json_encode($event); ?>
3.2 แก้ไขไฟล์ datepicker.php
เพิ่ม Code ในส่วนของ stylesheet เพื่อ กำหนดค่าการแสดงผลของวันที่
<style> /*CSS FOR DATEPICKER*/ .ui-highlight .ui-state-default{ background: #FBF8C5 !important; color: red !important; font-weight: bold; } </style>
3.3 แก้ไขไฟล์ datepicker.php
เพิ่ม Code ในส่วนของ Javascript เพื่อดึงข้อมูลวันที่จาก ไฟล์ event.php มาแสดงผลใน DatePicker
<html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Datepicker - Default functionality</title> <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <style> /*CSS FOR DATEPICKER*/ .ui-highlight .ui-state-default{ background: #FBF8C5 !important; color: red !important; font-weight: bold; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <script> $(function(){ $.ajax({ dataType:"json", url:"event.php", success:function(dates){ alert(dates); $( ".show_date" ).datepicker({ dateFormat: "yy-mm-dd", //กำหนดรูปแบบวันที่ ปี - เดือน - วัน changeMonth: true, // กำหนดให้เปลี่ยนเดือนได้ changeYear:true, //กำหนดให้เปลี่ยนปีได้ dayNamesMin: [ "อา", "จ", "อ", "พ", "พฤ", "ศ", "ส" ],//กำหนดชื่อย่อของวัน เป็น ภาษาไทย monthNamesShort: [ "มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม" ], onSelect: function(select_date) { //alert date alert("คุณเลือกวันที่ : "+select_date); alert(date); }, beforeShowDay : function(date){ var y = date.getFullYear().toString(); // get full year var m = (date.getMonth() + 1).toString(); // get month. var d = date.getDate().toString(); // get Day if(m.length == 1){ m = '0' + m; } // append zero(0) if single digit if(d.length == 1){ d = '0' + d; } // append zero(0) if single digit var currDate = y+'-'+m+'-'+d; if(dates.indexOf(currDate) >= 0){ return [true, "ui-highlight"]; }else{ return [true]; } } }); } }); }); </script> </head> <body> <p>Date: <input type="text" class="show_date"></p> </body> </html>