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