Jeśli ustawisz datepicker na input[type="text"]
elemencie, możesz nie uzyskać spójnie sformatowanej daty, szczególnie gdy użytkownik nie stosuje formatu daty do wprowadzania danych.
Na przykład po ustawieniu dateFormat jako dd-mm-yy
i typach użytkowników 1-1-1
. Datepicker przekonwertuje to na Jan 01, 2001
wewnętrznie, ale wywołanie val()
obiektu datepicker zwróci ciąg "1-1-1"
- dokładnie to, co jest w polu tekstowym.
Oznacza to, że powinieneś albo sprawdzać poprawność danych wprowadzanych przez użytkownika, aby upewnić się, że wprowadzona data jest w oczekiwanym formacie, albo nie zezwalać użytkownikowi na wprowadzanie dowolnych dat (preferując zamiast tego wybór kalendarza). Nawet tak, to jest możliwe, aby wymusić kod datepicker dać ciąg sformatowany jak można się spodziewać:
var picker = $('#datepicker');
picker.datepicker({ dateFormat: 'dd-mm-yy' });
picker.val( '1-1-1' ); // simulate user input
alert( picker.val() ); // "1-1-1"
var d = picker.datepicker( 'getDate' );
var f = picker.datepicker( 'option', 'dateFormat' );
var v = $.datepicker.formatDate( f, d );
alert( v ); // "01-01-2001"
Należy jednak pamiętać, że chociaż getDate()
metoda datepicker zwróci datę, może to zrobić tylko tyle, ile dane wejściowe użytkownika nie pasują dokładnie do formatu daty. Oznacza to, że przy braku sprawdzania poprawności możliwe jest odzyskanie daty innej niż oczekiwana przez użytkownika. Zastrzegający emptor .