jQuery datepicker встановити вибрану дату, на льоту


121

Як я можу динамічно змінювати вибрану дату вибору дати jquery Date? Я вже сказав, що створив інструмент вибору дати. Потім через деякий час я хочу відобразити іншу дату, не відтворюючи датчик з нуля.

Я спробував метод SETDATE, але не працює, і там не так багато документації в док .

Там буде інший (розширений?) Плагін тут , але я хочу , щоб використовувати плагін , який поставляється з jquery.ui.all.js.

Відповіді:


187

Яку версію jQuery-інтерфейсу ви використовуєте? Я перевірив наступне з 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
але для мене це не спрацювало як way.date було змінено.але обрана дата не відображається в календарі. це показує мені лише сьогодні виділеним.
Прагетський бог

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 працювати.

Я знайшов вирішення просто оновити атрибут значення даного вводу. Звичайно, сам підбирач дат не буде оновлюватися, але якщо ви просто шукаєте, щоб відобразити дату, вона працює чудово.

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()
Арслан Табассум

3

Це стара нитка, але я просто хочу дати деяку інформацію про те, як я користувався. Якщо ви хочете встановити дату сьогодні, ви можете просто застосувати її, як показано нижче.

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

Якщо ви хочете встановити кілька днів до / після поточної дати, тоді використовуйте символ -/+символу, скільки днів ви хочете, як показано нижче.

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

2

setDate, здається, є проблемою з вбудованим інструментом вибору дати, який використовується в інтерфейсі jquery, конкретна помилка - InternalError: занадто багато рекурсії.



2

У Html ви можете додати поле для введення з таким інструментом вибору дати

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

а потім у Java-скрипті ініціалізуйте підбірник дат і встановіть значення такої дати,

$('.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...

Відповіді, що стосуються лише коду, відмовляються від переповнення стека, оскільки вони не пояснюють, як це вирішує проблему. Будь ласка, відредагуйте свою відповідь, щоб пояснити, що робить код і як він відповідає на питання, щоб він був корисним і для інших користувачів, а також ОП.
FluffyKitten

-1

У мене також було багато проблем з методом setDate. здається, працює лише в v1. Однак, як здається, працює метод dpSetSelected:

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

Щасти!


-1

або ви можете просто мати

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

1
Вона повинна бути .datepicker()НЕ .datePicker().
Florin Frătică
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.