2012-01-09 4 views
5

Я хочу установить значения поля datepicker и altField, когда страница загружена, и мне было интересно, есть ли возможность в datepicker сделать это автоматически (т.е. без необходимости звоните setDate).Автоматически устанавливать выбранную дату на altField при загрузке

Я знаю, что если я делаю что-то вроде этого:

$("#date-div").datepicker({altField:"#date-input",altFormat:"yy-mm-dd", defaultDate:+7}); 

С date-div будучи div, дата по умолчанию автоматически добавляется в date-input поле при загрузке страницы. Но если я использую текстовое поле вместо div, он не устанавливает значения автоматически (я должен позвонить setDate в отдельной строке).

Мне просто интересно, я уже реализовал его, вызвав setDate, но я хотел бы знать, есть ли что-то, что нужно сделать автоматически, и если не почему? (поскольку он работает при использовании div для отображения календаря).

ответ

-2

Не 100% элегантна, как она нуждается в повторении, но это работает для меня:

$("#date-div").datepicker({altField:"#date-input",altFormat:"yy-mm-dd", defaultDate:$("#date-input").val()}); 
+0

Ваш ответ, кажется, не работает. Возможно, из-за различий в формате –

+1

-1 это работает только в том случае, если 'altFormat' совпадает с' dateFormat' ([docs] (http://api.jqueryui.com/datepicker/#utility-formatDate)). – Stijn

+0

если он работает при дополнительных условиях, то почему вы его понизили? Я вроде как не понимаю, что наказывался за то, что дал решение, которое работает – Kodak

0

Лучше всего, чтобы установить defaultDate это разобрать значение altField с библиотекой как Moment.js, так реализации браузера для даты синтаксического анализа ненадежны. Например, если ваш altField это поле перед вашей области Datepicker и это в формате ISO 8601, вы можете сделать это:

$(this).datepicker({ 
    altField: $(this).prev(), 
    altFormat: $.datepicker.ISO_8601, 
    defaultDate: moment($(this).prev().val()).toDate() 
}); 

Это будет только установить по умолчанию выбирается дата с при открытии календаря. Если вы хотите, чтобы заполнить поле Datepicker, вы можете сделать это после того, как инициализируется в DatePicker с указанным кодом:

$(this).datepicker("setDate", moment($(this).prev().val()).toDate()); 
Смежные вопросы