Как предварительно заполнить текстовое поле jQuery Datepicker сегодняшней датой?

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

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

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

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

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

18 ответов


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

это кратко и делает работу:

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

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


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

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


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

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

демо

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

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

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


значение :

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

значение вчера:

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

и так далее с любым количеством дней до или после сегодня!--5-->.

посмотреть jQuery UI "методы" setDate.


решение:

$(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!


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

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

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


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

$('#inputName')
  .datepicker()
  .datepicker('setDate', new Date());

код David K Egghead работал отлично, спасибо!

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

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

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

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

чтобы установить 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 
        });
  });

просто подумал, что я добавлю свои два цента. Средство выбора используется в форме добавления / обновления, поэтому необходимо показать дату, поступающую из базы данных при редактировании существующей записи, или показать сегодняшнюю дату, если нет. Ниже работает нормально для меня:

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

для предварительного заполнения даты сначала необходимо инициализировать datepicker, затем передать значение параметра setDate.

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

у вас есть 2 варианта:

ВАРИАНТ А) отмечает как "активный" в календаре, только когда вы нажимаете на вход.

Js:

$('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) ввод по умолчанию с today. Сначала вы должны заполнить datepicker .

$("input.datepicker").datepicker().datepicker("setDate", new Date());

var prettyDate = $.datepicker.formatDate('dd-M-yy', new Date());
alert(prettyDate);

назначьте prettyDate необходимому элементу управления.


попробуй такое

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

это работает лучше для меня, так как иногда у меня возникают проблемы с вызовом .datepicker('setDate', new Date()); как это беспорядок, если у меня уже настроен datepicker с параметрами.

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

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

источник: http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerDefaultToday.html