2012-01-09 12 views
5

Voglio impostare i valori del campo datepicker e altField quando la pagina viene caricata, e mi chiedevo se c'è un'opzione nel datepicker per farlo automaticamente (cioè senza dover chiama setDate).Imposta automaticamente la data selezionata su altField on load

so che se faccio qualcosa di simile:

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

Con date-div essere un div, la data di default viene automaticamente aggiunto al campo date-input quando la pagina viene caricata. Ma se uso un campo di testo invece di div non imposta automaticamente i valori (devo chiamare setDate in una riga separata).

Sono solo curioso di questo, l'ho già implementato chiamando setDate, ma mi piacerebbe sapere se c'è qualcosa da fare automaticamente e se no perché? (poiché funziona quando si utilizza un div per visualizzare il calendario).

risposta

-2

non al 100% elegante come ha bisogno di ripetizione, ma funziona per me:

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

La tua risposta non sembra funzionare. Forse a causa delle differenze nel formato –

+1

-1 funziona solo se 'altFormat' è uguale a' dateFormat' ([docs] (http://api.jqueryui.com/datepicker/#utility-formatDate)). – Stijn

+0

se funziona in condizioni aggiuntive, allora perché lo hai downvoted? In genere non capisco di essere punito per aver fornito una soluzione che funzioni – Kodak

0

La cosa migliore per impostare il defaultDate è quello di analizzare il valore della altField con una libreria come Moment.js, perché implementazioni browser per le date di analisi sono inaffidabili. Ad esempio, se il altField è il campo prima del vostro campo datepicker ed è in formato ISO 8601, si può fare questo:

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

che fisserà solo la data di default selezionato quando si apre il calendario. Se anche voi volete compilare il campo DatePicker, è possibile farlo dopo aver inizializzato il DatePicker con il codice di cui sopra:

$(this).datepicker("setDate", moment($(this).prev().val()).toDate()); 
Problemi correlati