จากที่เคยแนะนำ DateTimePicker สำหรับใช้ในการเลือกวันที่แล้ว
จากบทความด้านล่าง แล้ว
แนะนำ DateTimePicker เรียบง่าย และสวย น่าใช้มาก (แค่แนะนำ)
https://www.ninenik.com/content.php?arti_id=540 via @ninenik
เนื้อหาในตอนนี้จะมานำเสนอวิธีการปรับแต่ง
DateTimePicker ให้รองรับ ปี พ.ศ. อย่างสมบูรณ์
สำหรับการใช้งาน DateTimePicker ดาวน์โหลดได้ที่เว็บ
หรือคลิกขวาแล้วเลือก save ไฟล์จากลิ้งค์ด้านล่าง
แตกไฟล์แล้วเอาเฉพาะไฟล์ ด้านล่างนี้ไว้ใช้งาน
jquery.datetimepicker.css
jquery.datetimepicker.js
จากการใช้งานเราจะพบว่า DateTimePicker รองรับภาษาไทย และการ
กำหนดปี พ.ศ. ก็สามารถทำได้ แต่รูปแบบวันที่ในปฏิทินจะไม่ตรงตามวันปัจจุบัน
ดูตัวอย่างประกอบ
แบบที่ 1
กำหนดปกติ ภาษาอังกฤษ ปี ค.ศ.
$("#testdate1").datetimepicker({
timepicker:false,
inline:true
});
แบบที่ 2
กำหนดปกติ ภาษาไทย ปี ค.ศ.
$("#testdate2").datetimepicker({
timepicker:false,
lang:'th', // แสดงภาษาไทย
inline:true
});
แบบที่ 3
กำหนดปกติ ภาษาไทย ปี พ.ศ.
$("#testdate3").datetimepicker({
timepicker:false,
lang:'th', // แสดงภาษาไทย
yearOffset:543, // ใช้ปี พ.ศ. บวก 543 เพิ่มเข้าไปในปี ค.ศ
inline:true
});
แบบที่สามนี้เราจะพบปัญหาวันที่ไม่ตรงกับวันในสัปดาห์
เช่นแทนที่วันนี้จะเป็นวันจันทร์ กลับเป็นวันพฤหัส แบบนี้เป็นต้น
เวลานำไปใช้งาน ก็อาจจะสับสนได้ ดังนั้นจึงมีวิธีปรับแต่งพิเศษ
ตัวแบบที่ 4
แบบที่ 4
กำหนดปกติ ภาษาไทย ปี พ.ศ. วันในสัปดาห์ตรงตามเป็นจริง
var leap=3;
var dayWeek=["พฤ.", "ศ.", "ส.", "อา.","จ.", "อ.", "พ."];
var yearL=new Date().getFullYear()-543;
leap=(((yearL % 4 == 0) && (yearL % 100 != 0)) || (yearL % 400 == 0))?2:3;
if(leap==2){
dayWeek=["ศ.", "ส.", "อา.", "จ.","อ.", "พ.", "พฤ."];
}
$("#testdate4").datetimepicker({
timepicker:false,
lang:'th', // แสดงภาษาไทย
onChangeMonth:function( ct ){
var leap=3;
var dayWeek=["พฤ.", "ศ.", "ส.", "อา.","จ.", "อ.", "พ."];
if(ct){
var yearL=new Date(ct).getFullYear()-543;
leap=(((yearL % 4 == 0) && (yearL % 100 != 0)) || (yearL % 400 == 0))?2:3;
if(leap==2){
dayWeek=["ศ.", "ส.", "อา.", "จ.","อ.", "พ.", "พฤ."];
}
}
this.setOptions({
i18n:{ th:{dayOfWeek:dayWeek}},dayOfWeekStart:leap,
})
},
i18n:{ th:{dayOfWeek:dayWeek}},dayOfWeekStart:leap,
yearOffset:543, // ใช้ปี พ.ศ. บวก 543 เพิ่มเข้าไปในปี ค.ศ
inline:true
});
สี่ตัวอย่างข้างต้นเป็นการใช้งานแบบ inline ใช้กับ div แสดงปฏิทิน
ต่อต่อไปจะแสดงตัวอย่างการใช้งานกับ input text
ตัวอย่าง
โค้ดตัวอย่าง test_datetimepicker.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="js/jquery.datetimepicker.css">
</head>
<body>
<div style="margin:auto;width:400px;">
<br>
<input type="text" name="testdate5" id="testdate5" value="" style="width:100px;">
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="js/jquery.datetimepicker.js"></script>
<script type="text/javascript">
$(function(){
var thaiYear = function (ct) {
var leap=3;
var dayWeek=["พฤ.", "ศ.", "ส.", "อา.","จ.", "อ.", "พ."];
if(ct){
var yearL=new Date(ct).getFullYear()-543;
leap=(((yearL % 4 == 0) && (yearL % 100 != 0)) || (yearL % 400 == 0))?2:3;
if(leap==2){
dayWeek=["ศ.", "ส.", "อา.", "จ.","อ.", "พ.", "พฤ."];
}
}
this.setOptions({
i18n:{ th:{dayOfWeek:dayWeek}},dayOfWeekStart:leap,
})
};
$("#testdate5").datetimepicker({
timepicker:false,
format:'d-m-Y', // กำหนดรูปแบบวันที่ ที่ใช้ เป็น 00-00-0000
lang:'th', // แสดงภาษาไทย
onChangeMonth:thaiYear,
onShow:thaiYear,
yearOffset:543, // ใช้ปี พ.ศ. บวก 543 เพิ่มเข้าไปในปี ค.ศ
closeOnDateSelect:true,
});
});
</script>