ฉันจะเติมกล่องข้อความ jQuery Datepicker ล่วงหน้าด้วยวันที่วันนี้ได้อย่างไร


237

ฉันมีปฏิทิน DatePicker ที่ง่ายมาก jQuery:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
});

และแน่นอนใน HTML ...

<input type="text" size="10" value="" id="date_pretty"/>

วันที่วันนี้มีการเน้นเป็นอย่างดีสำหรับผู้ใช้เมื่อพวกเขาเปิดปฏิทิน แต่ฉันจะทำให้ jQuery แสดงข้อมูลล่วงหน้าในช่องข้อความด้วยตัวเองพร้อมวันที่วันนี้ที่โหลดหน้าเว็บได้โดยไม่ต้องทำอะไรเลย? 99% ของเวลาวันที่เริ่มต้นของวันนี้จะเป็นสิ่งที่พวกเขาต้องการ


7
คำตอบที่ได้รับความนิยมมากที่สุดคือคำตอบที่ดีกว่า ดีกว่าที่จะเปลี่ยนคำตอบที่ยอมรับได้
ahmadali shafiee

คำถามที่เกี่ยวข้องของฉันstackoverflow.com/questions/25602649/…
Adrien เป็น

1
@ahmadalishafiee (และคนอื่น ๆ ) วิธีการแก้ปัญหาที่ยอมรับในปัจจุบันได้รับการยอมรับใน 2015-05-07
Teepeemm

คำตอบ:


569

อัปเดต: มีรายงานว่าไม่สามารถใช้งานได้ใน Chrome อีกต่อไป

นี่คือรัดกุมและทำงาน (ล้าสมัย):

$(".date-pick").datepicker('setDate', new Date());

รัดกุมน้อยกว่าการใช้การโยงให้อนุญาตให้ทำงานในโครเมี่ยม (2019-06-04):

$(".date-pick").datepicker().datepicker('setDate', new Date());

3
วิธีแก้ปัญหานี้สวยงาม
ซ่อน

2
นี่คือสิ่งที่ใช้งานได้จริงสำหรับฉันและไม่ใช่โซลูชันที่ได้รับการยอมรับ ขอบคุณ
Mehdiway

7
สิ่งนี้จะไม่ทำงานขั้นแรกคุณควรโทร $ (". date-pick"). datepicker (); จากนั้น $ (". date-pick"). datepicker ('setDate', Date ใหม่ ());
Misha Akopov

9
ใช้งานไม่ได้ใน Chrome หลังจากอัปเดตเบราว์เซอร์ล่าสุด
Max Flex

3
โรงงาน ฉันตั้ง$(".date-pick").datepicker().datepicker('setDate', new Date()); สรรพสินค้าใหญ่
seebiscuit

221

คุณต้องโทรหา datepicker ()> จากนั้นใช้ 'setDate' เพื่อรับวันที่ปัจจุบัน

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());

หรือโยงการเรียกใช้เมธอด setDate ของคุณหลังจากการกำหนดค่าเริ่มต้น datepicker ตามที่ระบุไว้ในความคิดเห็นในคำตอบนี้

$('.date-pick').datepicker({ /* optional option parameters... */ })
               .datepicker("setDate", new Date());

มันจะไม่ทำงานกับเพียง

$(".date-pick").datepicker("setDate", new Date());

หมายเหตุ :พารามิเตอร์ setDate ที่ยอมรับได้อธิบายไว้ที่นี่


3
การใช้ jQueryUI 1.8 ฉันพบว่าวิธีนี้เป็นวิธีเดียวที่ทำให้สำเร็จ
brianz

13
$ (". selector"). datepicker (). datepicker ("setDate", ใหม่ Date ()); จะใช้งานได้และจะไม่ทำการค้นหา jQuery ใน DOM สองครั้ง
abc123

1
คำตอบที่ยอดเยี่ยมตอบรับเพียง $ (". date-pick"). datepicker ("setDate", Date ใหม่ ()); และมันไม่สามารถใช้งานได้หากไม่มีการเรียก $ (". date-pick") datepicker (); คำตอบของคุณดีขึ้นมาก
Misha Akopov

71
var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

ดูเหมือนจะทำงานได้ แต่อาจมีวิธีที่ดีกว่าที่นั่น ..


วิธีนี้ใช้งานได้ดียกเว้นสองสิ่ง: 1) ฉันหวังว่าจะใช้วิธี jQuery เพื่อรับวันที่ปัจจุบัน แต่อาจจะไม่สำคัญ 2) โซลูชันนี้สร้างมูลค่าหนึ่งเดือนก่อนหน้าวันนี้!
มาร์คัส

2
โอ้ - คุณพูดถูก! ตรวจสอบ - w3schools.com/jsref/jsref_obj_date.asp - เดือนคือ 0-11 - คุณจะต้องเพิ่ม 1 .. อยากรู้อยากเห็น GetDate คือ 1-31 แต่ getMonth คือ 0-11 ..
ลูคัส

3
มีวิธีง่ายกว่า .. ดูโพสต์ของฉันด้านล่าง
Ravi Ram

โซลูชันนี้จะแสดงข้อความโดยตรงและกำหนดวันที่พร้อมกันในขณะที่โซลูชันของ CiscoIPPhone ต้องการอีกขั้นตอนหนึ่งในการแสดงค่าโดยไม่ต้องเปิดเครื่องมือเลือก
Afshar Mohebbi

4
สำหรับsetDateคุณยังสามารถใช้สัญกรณ์ญาติตามปกติของ datepicker .datepicker('setDate', '+1d')เช่นที่จะได้รับในวันต่อไปเพียงแค่พิมพ์
kosii

59

setDate()วิธีการกำหนดวันและการปรับปรุงการควบคุมที่เกี่ยวข้อง นี่คือวิธี:

$("#datepicker1").datepicker({
    dateFormat: "yy-mm-dd"
}).datepicker("setDate", "0");

การสาธิต

ดังที่กล่าวไว้ในเอกสารsetDate()ยอมรับวัตถุ JavaScript วันที่หมายเลขหรือสตริงอย่างมีความสุข:

วันที่ใหม่อาจเป็นวัตถุ Date หรือสตริงในรูปแบบวันที่ปัจจุบัน (เช่น '01 / 26/2009 ') จำนวนวันนับจากวันนี้ (เช่น +7) หรือสตริงของค่าและจุด (' y 'สำหรับ ปี 'm' สำหรับเดือน, 'w' สำหรับสัปดาห์, 'd' สำหรับวันเช่น '+ 1m + 7d') หรือ null เพื่อล้างวันที่ที่เลือก

ในกรณีที่คุณสงสัยการตั้งค่าdefaultDateคุณสมบัติในตัวสร้างไม่ปรับปรุงการควบคุมที่เกี่ยวข้อง


1
เหตุใดในการสาธิตของคุณจึงใช้งานได้ เมื่อฉันคัดลอกรหัสนี้ลงในเว็บไซต์ของฉันกล่องโต้ตอบจะปรากฏขึ้นเรื่อย ๆ เมื่อ pg โหลด
chobo2

1
สิ่งนี้ใช้ได้สำหรับฉัน - คำตอบที่ยอมรับและตัวเลือกอื่น ๆ ด้านบนไม่ได้
lydiat

นี่เป็นวิธีแก้ปัญหาที่ดีกว่าและเหนือกว่าอย่างใดอย่างหนึ่ง
adamj

คำตอบที่ดีที่สุดสำหรับคำถามนี้ในขณะนี้แม้ว่าฉันต้องการรูปแบบวันที่เป็น "mm-dd-yy" เพื่อให้ตรงกับตัวใช้เลือกวันที่
John81

26

ตั้งเป็นวันนี้ :

$('#date_pretty').datepicker('setDate', '+0');

ตั้งเป็นเมื่อวาน :

$('#date_pretty').datepicker('setDate', '-1');

และอื่น ๆ ที่มีหมายเลขใด ๆ ของวันก่อนหรือหลัง วันที่วันนี้

ดูjQuery UI> วิธี> setDate


1
ยอดเยี่ยมอย่างที่คนอื่น ๆ พูดถึงคุณต้องเรียก datepicker () หนึ่งครั้งแล้ว$(".date-pick").datepicker("setDate", '+0');
jwbensley

สิ่งนี้ยังทำงานได้ตามที่ฉันต้องการเนื่องจาก dateFormat ของฉันต้องตรงกับรูปแบบวันที่ของ MySQL (yy-mm-dd) setDate นี้เพิ่มการเติมเต็มเป็นศูนย์ในเดือนและวัน
jjohn

9

ทางออกคือ:

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
    var myDate = new Date();
    var month = myDate.getMonth() + 1;
    var prettyDate = month + '/' + myDate.getDate() + '/' + myDate.getFullYear();
    $("#date_pretty").val(prettyDate);
});

ขอบคุณ Grayghost!


7

รหัสนี้จะรับรองการใช้รูปแบบ datepicker ของคุณ:

$('#date-selector').datepicker('setDate', new Date());

ไม่จำเป็นต้องใช้รูปแบบอีกครั้งโดยใช้ datepicker ที่กำหนดไว้ล่วงหน้าหนึ่งโดยคุณในการเริ่มต้น datepicker (ถ้าคุณได้กำหนดไว้!);)



5

โค้ดของ David K ​​Egghead ทำงานได้อย่างสมบูรณ์ขอบคุณ!

$(".date-pick").datepicker(); 
$(".date-pick").datepicker("setDate", new Date()); 

ฉันจัดการเพื่อตัดมันเล็กน้อยและมันก็ทำงาน:

$(".date-pick").datepicker().datepicker("setDate", new Date()); 

4
$('input[name*="date"]').datepicker({
        dateFormat: 'dd-mm-yy',
        changeMonth: true,
        changeYear: true,
        beforeShow: function(input, instance) { 
            $(input).datepicker('setDate', new Date());
        }
    });

2

เพื่อที่จะตั้ง datepicker เป็นเวลาเริ่มต้นที่แน่นอน (วันที่ปัจจุบันในกรณีของฉัน) ในการโหลดและจากนั้นมีตัวเลือกให้เลือกวันที่อื่นไวยากรณ์คือ:

    $(function() { 
        // initialize the datapicker
        $("#date").datepicker();

        // set the time
        var currentDate = new Date();
        $("#date").datepicker("setDate",currentDate);

    //  set the options for the button  
        $("#date").datepicker("option",{
            dateFormat: 'dd/mm',
            showOn: "button",
          // whatever option Or event you want 
        });
  });

วิธีนี้ใช้ได้กับฉันในโครเมียมส่วนคนอื่น ๆ ที่ระบุไว้ที่นี่ไม่ได้
Mike Volmar

2

หากต้องการเติมข้อมูลวันที่ก่อนอื่นคุณต้องเริ่มต้น datepicker ก่อนจากนั้นส่งค่าพารามิเตอร์ setDate

$("#date_pretty").datepicker().datepicker("setDate", new Date());

1

แค่คิดว่าฉันจะเพิ่มสองเซ็นต์ของฉัน ตัวเลือกกำลังถูกใช้ในฟอร์มเพิ่ม / อัปเดตดังนั้นจึงจำเป็นต้องแสดงวันที่ที่มาจากฐานข้อมูลหากแก้ไขระเบียนที่มีอยู่หรือแสดงวันที่วันนี้ถ้าไม่ ด้านล่างใช้งานได้ดีสำหรับฉัน:

    $( "#datepicker" ).datepicker();
    <?php if (!empty($oneEVENT['start_ts'])): ?>
       $( "#datepicker" ).datepicker( "setDate", "<?php echo $startDATE; ?>" );
    <? else: ?>
       $("#datepicker").datepicker('setDate', new Date());   
    <?php endif; ?>
  });

1

คุณมี 2 ตัวเลือก:

ตัวเลือกก) ทำ เครื่องหมายว่า "ใช้งานอยู่" ในปฏิทินของคุณเฉพาะเมื่อคุณคลิกที่อินพุท

เจส :

$('input.datepicker').datepicker(
                        {   
                            changeMonth: false,
                            changeYear: false,
                            beforeShow: function(input, instance) { 
                                $(input).datepicker('setDate', new Date());
                            }
                        }                         
                     );

Css :

div.ui-datepicker table.ui-datepicker-calendar .ui-state-active,
        div.ui-datepicker table.ui-datepicker-calendar .ui-widget-content .ui-state-active  {
            background: #1ABC9C;
            border-radius: 50%;
            color: #fff;
            cursor: pointer;
            display: inline-block;
            width: 24px; height: 24px;
        }​

ตัวเลือก B)ป้อนข้อมูลตามค่าเริ่มต้นด้วยวันนี้ คุณต้องใส่ datepicker ก่อน

$ ("input.datepicker"). datepicker (). datepicker ("setDate", ใหม่ Date ());

1
ตัวเลือก A นั้นดีเนื่องจากตัวใช้เลือกวันที่ยังคงว่างเปล่าจนกว่าจะเลือกวันที่ซึ่งเป็นจุดเริ่มต้นของวันที่ปัจจุบัน
waxingsatirical


0

ลองสิ่งนี้

$(this).datepicker("destroy").datepicker({
            changeMonth: false, changeYear: false,defaultDate:new Date(), dateFormat: "dd-mm-yy",  showOn: "focus", yearRange: "-5:+10"
        }).focus();

0

มันใช้งานได้ดีกว่าสำหรับฉันเพราะบางครั้งฉันมีปัญหาในการโทร.datepicker('setDate', new Date());เพราะมันยุ่งถ้าหากฉันมี datepicker กำหนดค่าพารามิเตอร์ไว้แล้ว

$("#myDateText").val(moment(new Date()).format('DD/MM/YYYY'));

0

ใช้สิ่งนี้:

$(".datepicker").datepicker({ dateFormat: 'dd-M-yy' }).datepicker('setDate', new Date());

เพื่อรับวันที่ในรูปแบบเช่น: 10-Oct-2019 ซึ่งผู้ใช้จะเข้าใจได้มากขึ้น


-1
$(function()
{
$('.date-pick').datePicker().val(new Date().asString()).trigger('change');
});

ที่มา: http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerDefaultToday.html


เบราว์เซอร์ของฉันไม่รู้จักฟังก์ชัน asString () ฉันทำเช่นนี้: $ (". date-pick"). datepicker ('setDate', Date ใหม่ ());
CiscoIPPhone

1
ฉันคิดว่า asString () ควรเป็น toString ()
rg88

1
DatePicker ของ Kevin Luck และ JQuery UI DatePicker นั้นเป็น datepickers ที่แตกต่างกันสองคน
Craig Hooghiem

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