Если вы настроили средство выбора даты на элементе input[type="text"]
, вы можете не получить постоянно отформатированную дату, особенно если пользователь не следует формату даты для ввода данных.
Например, когда вы устанавливаете dateFormat как dd-mm-yy
и пользователь вводит 1-1-1
. Datepicker преобразует это в Jan 01, 2001
внутренне, но вызов val()
для объекта datepicker вернет строку "1-1-1"
- именно то, что находится в текстовом поле.
Это означает, что вы должны либо проверять введенные пользователем данные, чтобы убедиться, что введенная дата соответствует ожидаемому формату, либо не разрешать пользователю вводить даты произвольной формы (предпочтительнее вместо выбора календаря). Даже в этом случае можно заставить код средства выбора даты выдавать строку, отформатированную так, как вы ожидаете:
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"
Имейте в виду, однако, что хотя метод getDate()
средства DatePicker будет возвращать дату, он может делать очень многое только с пользовательским вводом, который точно не соответствует формату даты. Это означает, что при отсутствии проверки можно получить дату, отличную от ожидаемой пользователем. Предостережение emptor .