jQuery datepicker ตั้งค่าวันที่ที่เลือกได้ทันที


121

ฉันจะเปลี่ยนวันที่เลือกของตัวเลือกวันที่ jquery แบบไดนามิกได้อย่างไร? ฉันบอกว่าสร้างตัวเลือกวันที่แบบอินไลน์ หลังจากนั้นไม่นานฉันต้องการแสดงวันที่อื่นโดยไม่ต้องสร้าง datepicker ใหม่ตั้งแต่ต้น

ฉันพยายามวิธี setDate แต่ไม่ได้ทำงานและไม่มีเอกสารมากในdoc

มีปลั๊กอินอื่น (ขยาย?) ที่นี่แต่ฉันต้องการใช้ปลั๊กอินที่มาพร้อมกับ jquery.ui.all.js

คำตอบ:


187

คุณใช้ jQuery-UI เวอร์ชันใด ฉันได้ทดสอบสิ่งต่อไปนี้ด้วย 1.6r6, 1.7 และ 1.7.1 และใช้งานได้:

//Set DatePicker to October 3, 2008
$('#dateselector').datepicker("setDate", new Date(2008,9,03) );

16
ใช้ defaultDate แทน setDate ถ้า setDate ไม่ทำงาน
bingjie2680

8
แต่สำหรับฉันมันใช้ไม่ได้ทั้งสองวิธีวันที่เปลี่ยนแปลง แต่วันที่ที่เลือกไม่ปรากฏในปฏิทิน มันแสดงให้ฉันเห็นเฉพาะวันนี้ที่ไฮไลต์
Prageeth godage

28

ตรวจสอบว่าวันที่ที่คุณพยายามกำหนดให้อยู่ภายในช่วงวันที่ที่อนุญาตหากตั้งค่าตัวเลือก minDate หรือ maxDate ไว้


10

ตัวอย่างนี้แสดงวิธีใช้ค่าเริ่มต้นในปฏิทินแบบเลื่อนลงและค่าในกล่องข้อความ นอกจากนี้ยังแสดงวิธีการตั้งค่าเริ่มต้นเป็นวันที่ก่อนหน้า

selectedDate เป็นตัวแปรอื่นที่เก็บวันที่เลือกปัจจุบันของตัวควบคุมปฏิทิน

    var date = new Date();
    date.setDate(date.getDate() - 1);

    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd",
        defaultDate: date,
        onSelect: function () {
            selectedDate = $.datepicker.formatDate("yy-mm-dd", $(this).datepicker('getDate'));
        }
    });

    $("#datepicker").datepicker("setDate", date);

8

สังเกตว่าสำหรับ DatePicker โดย Keith Wood ( http://keith-wood.name/datepickRef.html ) การทำงานต่อไปนี้ - โปรดทราบว่าการตั้งค่าวันที่เริ่มต้นเป็นวันสุดท้าย:

    $('#datepicker').datepick({
        minDate: 0,
        maxDate: '+145D',
        multiSelect: 7,
        renderer: $.datepick.themeRollerRenderer,
        ***defaultDate: new Date('1 January 2008')***
    });

7

ด้วยเหตุผลบางประการในบางกรณีฉันไม่สามารถทำให้ setDate ทำงานได้

วิธีแก้ปัญหาที่ฉันพบคือเพียงอัปเดตแอตทริบิวต์ค่าของอินพุตที่ระบุ แน่นอนว่า datepicker เองจะไม่ได้รับการอัปเดต แต่ถ้าสิ่งที่คุณมองหาคือการแสดงวันที่มันก็ใช้ได้ดี

var date = new Date(2008,9,3);
$("#your-input").val(date.getMonth()+"/"+date.getDate()+"/"+date.getFullYear());
// Will display 9/3/2008 in your #your-input input

6
มีการปิดทีละเดือนดังนั้นคุณต้อง (date.getMonth () + 1)
อดัม

1
setDate ไม่ทำงานหากตั้งค่าไว้ในตัวเลือกเริ่มต้นฉันจะเชื่อมต่อกับ .datepicker ('setDate', ... )
martinedwards

4
$('.date-pick').datePicker().val(new Date()).trigger('change')

ในที่สุดสิ่งที่ฉันมองหาในช่วงไม่กี่ชั่วโมงที่ผ่านมา! ฉันต้องการเริ่มต้นการเปลี่ยนแปลงไม่ใช่แค่วันที่ตั้งค่าในช่องข้อความ!


2
มันควรจะเป็น.datepicker()ไม่ได้.datePicker()
Arslan ทาบาสซึม

3

นี่เป็นกระทู้เก่า แต่ฉันแค่อยากจะให้ข้อมูลว่าฉันใช้อย่างไร หากคุณต้องการกำหนดวันที่วันนี้คุณสามารถสมัครได้ตามด้านล่างนี้

 $("#datepickerid").datepicker("setDate", "0");

หากคุณต้องการตั้งค่าบางวันก่อน / หลังวันที่ปัจจุบันให้ใช้-/+สัญลักษณ์ของจำนวนวันที่คุณต้องการด้านล่าง

 $("#datepickerid").datepicker("setDate", "-7");
 $("#datepickerid").datepicker("setDate", "+5");

2

setDate ดูเหมือนจะเป็นปัญหากับ datepicker แบบอินไลน์ที่ใช้ใน jquery UI ข้อผิดพลาดเฉพาะคือ InternalError: การเรียกซ้ำมากเกินไป



2

ใน Html คุณสามารถเพิ่มช่องป้อนข้อมูลด้วยตัวเลือกวันที่เช่นนี้

<input class="form-control date-picker fromDates" id="myDate" type="text">

จากนั้นในสคริปต์ java เริ่มต้น datepicker ของคุณและตั้งค่าของคุณเป็นวันที่เช่นนี้

$('.fromDates').datepicker({
                maxDate: '0',
                dateFormat: "dd/mm/yy",
                changeYear: true,
                changeMonth: true,
                yearRange: "-100:+0"
            });

var myDateVal = moment('${value}').format('DD/MM/YYYY');
$('#myDate').datepicker().datepicker('setDate', myDateVal );

(ในแอตทริบิวต์ fromdate ที่นี่แสดงวันที่ก่อนหน้าของวันที่ปัจจุบัน)


0
var dt = new Date();
var renewal = moment(dt).add(1,'year').format('YYYY-MM-DD');
// moment().add(number, period)
// moment().subtract(number, period)
// period : year, days, hours, months, week...

คำตอบที่ใช้รหัสอย่างเดียวไม่ได้รับการสนับสนุนใน Stack Overflow เนื่องจากไม่ได้อธิบายวิธีการแก้ปัญหา โปรดแก้ไขคำตอบของคุณเพื่ออธิบายว่าโค้ดใช้ทำอะไรและตอบคำถามอย่างไรเพื่อให้เป็นประโยชน์สำหรับผู้ใช้รายอื่นรวมถึง OP
FluffyKitten

-1

ฉันมีปัญหากับเมธอด setDate เช่นกัน ดูเหมือนว่าจะใช้ได้เฉพาะในเวอร์ชัน 1 เท่านั้น ดูเหมือนจะทำงานอย่างไรโดยใช้วิธี dpSetSelected:

    $("#dateselector").dpSetSelected(new Date(2010, 0, 26).asString());

โชคดี!


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