วิธีรับวันที่จาก jQuery UI datepicker


86

ฉันต้องการรับวันที่จาก datepicker เมื่อใดก็ตามที่ผู้ใช้เลือกวันที่ใน jQuery UI datepicker แล้วคลิกปุ่มบนแบบฟอร์ม

ฉันต้องได้วันเดือนและปีของวันที่พวกเขาเลือก ฉันจะรับรูปแบบวันที่ jQuery UI ได้อย่างไร

คำตอบ:


130

ใช้

var jsDate = $('#your_datepicker_id').datepicker('getDate');
if (jsDate !== null) { // if any date selected in datepicker
    jsDate instanceof Date; // -> true
    jsDate.getDate();
    jsDate.getMonth();
    jsDate.getFullYear();
}

เป็นวิธีเรียกใช้เมธอดใด ๆ ในประเภทข้อมูลวันที่หรือไม่ ฉันหมายถึง getDate, getMonth, getFullYear เป็นต้น?
Ajeeb.KP

หลังจากเรียก getDate บน datepicker คุณจะได้รับวัตถุ js Date () ซึ่งสามารถใช้เพื่อเรียก getDate, getMonth, getFullYear และอื่น ๆ
CoolEsh

ถ้าเราพิมพ์ตัวแปร jsDate มันจะให้อะไรแบบนี้จันทร์ 24 ส.ค. 2020 00:00:00 GMT + 0530 (เวลามาตรฐานอินเดีย) ตอนนี้เราสามารถใช้เมธอด getDate, getMonth, getFullYear ใน jsDate ได้แล้ว
Laveena

87

คุณสามารถดึงวันที่ได้โดยใช้ฟังก์ชัน getDate:

$("#datepicker").datepicker( 'getDate' );

ค่าจะถูกส่งกลับเป็นวัตถุ JavaScript Date

หากคุณต้องการใช้ค่านี้เมื่อผู้ใช้เลือกวันที่คุณสามารถใช้เหตุการณ์ onSelect:

$("#datepicker").datepicker({
   onSelect: function(dateText, inst) { 
      var dateAsString = dateText; //the first parameter of this function
      var dateAsObject = $(this).datepicker( 'getDate' ); //the getDate method
   }
});

พารามิเตอร์แรกคือในกรณีนี้คือ Date ที่เลือกเป็น String ใช้ parseDate เพื่อแปลงเป็น JS Date Object

ดูhttp://docs.jquery.com/UI/Datepickerสำหรับข้อมูลอ้างอิง jQuery UI DatePicker ฉบับเต็ม


ทางออกที่ดีที่สุดเนื่องจากไม่จำเป็นต้องมีตัวแปร global ของอ็อบเจ็กต์
Rashid



1

บางครั้งปัญหามากมายกับมัน ในค่าแอตทริบิวต์ของข้อมูล datapicker คือ 28-06-2014 แต่ datepicker แสดงวันนี้หรือไม่มีอะไรเลย ฉันตัดสินใจในลักษณะดังกล่าว:

<input type="text" class="form-control datepicker" data-value="<?= date('d-m-Y', (!$event->date ? time() : $event->date)) ?>" value="<?= date('d-m-Y', (!$event->date ? time() : $event->date)) ?>" />

ฉันเพิ่มลงในอินพุตของ data-value แอตทริบิวต์ datapicker เพราะถ้าเรียกjQuery (this) .val () OR jQuery (this) .attr ('value') - ไม่มีอะไรทำงาน ฉันตัดสินใจเริ่มต้นในรอบแต่ละ datapicker และรับค่าจากแอตทริบิวต์ data-value:

 $("form .datepicker").each(function() {
        var time = jQuery(this).data('value');
        time = time.split('-');
        $(this).datepicker('setDate', new Date(time[2], time[1], time[0], 0, 0, 0));
    });

และมันใช้งานได้ดี =)


สิ่งนี้จะใช้ได้ก็ต่อเมื่อรูปแบบวันที่ของคุณเป็น dmY .. หากคุณมี mdY หรือรูปแบบอื่น ๆ แสดงว่าคุณถูกเลื่อน!
Mohamed Nuur

1

คำตอบของ NamingException ใช้ได้ผลสำหรับฉัน ยกเว้นฉันใช้

var date = $("#date").dtpicker({ dateFormat: 'dd,MM,yyyy' }).val()

datepickerไม่ได้ผล แต่dtpickerทำ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.