Как предварительно заполнить текстовое поле jQuery Datepicker сегодняшней датой? - PullRequest
229 голосов
/ 24 октября 2008

У меня очень простой календарь jQuery Datepicker:

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

и конечно же в HTML ...

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

Сегодняшняя дата хорошо подсвечивается для пользователя, когда он запускает календарь, но как мне заставить jQuery предварительно заполнить само текстовое поле сегодняшней датой при загрузке страницы, при этом пользователь ничего не делает? 99% времени сегодняшняя дата по умолчанию будет тем, что они хотят.

Ответы [ 18 ]

554 голосов
/ 24 февраля 2010

Обновление: есть сообщения, что это больше не работает в Chrome.

Это лаконично и выполняет работу (устарело):

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

Это менее лаконично: использование цепочка позволяет работать в Chrome (2019-06-04):

$(".date-pick").datepicker().datepicker('setDate', new Date());
219 голосов
/ 20 января 2012

Вы должны сначала вызвать 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 описаны здесь

71 голосов
/ 24 октября 2008
var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

, казалось, сработало, но, возможно, есть лучший выход ...

57 голосов
/ 05 августа 2012

Метод setDate() устанавливает дату и обновляет связанный элемент управления. Вот как:

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

Демо

Как указано в документации, setDate() с радостью принимает объект JavaScript Date, число или строку:

Новая дата может быть объектом Date или строкой в ​​текущей дате. формат (например, «01/26/2009»), количество дней с сегодняшнего дня (например, +7) или строка значений и периодов ('y' для лет, 'm' для месяцев, 'w' для недели, 'd' - дни, например '+ 1m + 7d'), или ноль, чтобы очистить выбранное дата.

Если вам интересно, установка свойства defaultDate в конструкторе не не обновляет связанный элемент управления.

25 голосов
/ 23 июня 2012

Установите на сегодня :

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

Установите на вчера :

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

И так далее с любым числом дней до или после сегодняшняя дата .

См. jQuery UI ›Методы› setDate .

9 голосов
/ 24 октября 2008

Решение:

$(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);
});

Спасибо, серый призрак!

7 голосов
/ 08 апреля 2013

Этот работал для меня.

$('#inputName')
  .datepicker()
  .datepicker('setDate', new Date());
7 голосов
/ 18 августа 2010

Этот код гарантирует использование формата вашего указателя даты:

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

Нет необходимости повторно применять формат, он использует предопределенный вами DatePicker-1 при инициализации DatePicker (если вы его присвоили!);)

5 голосов
/ 24 октября 2012

Код Дэвида К Эггхеда работал отлично, спасибо!

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

Мне также удалось немного урезать его, и это также сработало:

$(".date-pick").datepicker().datepicker("setDate", new Date()); 
4 голосов
/ 16 февраля 2011
$('input[name*="date"]').datepicker({
        dateFormat: 'dd-mm-yy',
        changeMonth: true,
        changeYear: true,
        beforeShow: function(input, instance) { 
            $(input).datepicker('setDate', new Date());
        }
    });
...