我正在尝试制作一个日期选择器,它将为实现了 html5 规范的浏览器运行,并为那些没有实现的浏览器提供一个 jquery ui 日期选择器。
到目前为止,我有:
<input type="date" id="TargetDate1" name="TargetDate1" class="date" value="2013-06-29" min="2013-06-26" max="2016-06-26" required="required" autocomplete="off">
它在 Chrome27 中运行良好,提供本机 html5 控件,并在选择之前和之后以英国格式 dd/mm/yyyy 正确格式化日期。我正在使用以下 jquery 来提供 jquery ui 日期选择器:
if (Modernizr.inputtypes.date === false) {
$('.date').datepicker({
changeMonth: true,
changeYear: true,
minDate: 0,
maxDate: "+3Y"
}).prop("min", "").prop("max", "");
}
我还使用了以下国际化文件来格式化日期,并尝试在上面指定 dateFormat: 'dd/mm/yy' 。
/*global jQuery */
/* English/UK initialisation for the jQuery UI date picker plugin. */
/* Written by Stuart. */
jQuery(function ($) {
$.datepicker.regional['en-GB'] = {
closeText: 'Done',
prevText: 'Prev',
nextText: 'Next',
currentText: 'Today',
monthNames: ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'],
monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday'],
dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
weekHeader: 'Wk',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''
};
$.datepicker.setDefaults($.datepicker.regional['en-GB']);
});
在非 html5 浏览器中,当用户使用 Jquery UI 日期选择器选择日期(例如在 FF22 中)时,它会以正确的格式提供日期:dd/mm/yyyy 到表单。问题是最初加载表单时,日期格式为 yyyy-mm-dd 格式,这是不正确的。
是否有让 jquery 或其他方法为所有场景正确格式化日期?
我还注意到,通过将 min="2013-06-26" max="2016-06-26" 指定为 FF,它不会让我保存数据,除非它再次采用 yyyy-mm-dd 格式。因此,在上面的 jquery 中它会将其空白。如果有人有办法在 jquery 中使用 html5 标记,或者不必清除最小值/最大值,那将很有用。谢谢