Wenn Sie einen Datepicker für ein input[type="text"]
Element einrichten , erhalten Sie möglicherweise kein konsistent formatiertes Datum, insbesondere wenn der Benutzer das Datumsformat für die Dateneingabe nicht einhält .
Zum Beispiel, wenn Sie das Datumsformat als dd-mm-yy
und die Benutzertypen festlegen 1-1-1
. Der Datepicker konvertiert dies in Jan 01, 2001
intern, aber val()
wenn Sie das Datepicker-Objekt aufrufen, wird die Zeichenfolge zurückgegeben "1-1-1"
- genau das, was sich im Textfeld befindet.
Dies bedeutet, dass Sie entweder die Benutzereingaben validieren sollten, um sicherzustellen, dass das eingegebene Datum in dem von Ihnen erwarteten Format vorliegt, oder dass Sie dem Benutzer nicht erlauben, Datumsfreiform einzugeben (bevorzugen Sie stattdessen die Kalenderauswahl). Trotzdem ist es möglich, den Datepicker-Code so zu erzwingen, dass Sie eine Zeichenfolge erhalten, die wie erwartet formatiert ist:
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"
Beachten Sie jedoch, dass die getDate()
Methode des Datepickers zwar ein Datum zurückgibt , jedoch nur mit Benutzereingaben, die nicht genau dem Datumsformat entsprechen, so viel bewirken kann. Dies bedeutet, dass es ohne Validierung möglich ist, ein Datum zurückzugewinnen, das sich von den Erwartungen des Benutzers unterscheidet. Vorbehalt Emptor .