我只想显示月份和年份。如果我在选择日期后重新聚焦相同的输入,它会显示错误的月份和年份,而不会显示之前选择的月份和年份。例如,我选择 2010 年 12 月,然后重新聚焦显示 2015 年 4 月的相同输入,如下图所示。我该怎么办?
HTML
<input type="text" class="dp" readonly="true">
CSS
.ui-datepicker-calendar {
display: none;
}
JS
$('.dp').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'mm.yy',
onClose: function (dateText, inst) {
$(this).datepicker('setDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
}
});
最佳答案
日期选择器希望能够将显示的日期版本解析为 javascript 日期对象。
执行此操作的一种方法是为您的特殊日期格式添加自定义 parseDate 函数。下面的代码查找“mm.yy”的特殊格式,如果找到,则将值解析为日期。如果格式是其他格式,则将处理传递给原始的 datepicker.parseDate。
var standardParseDate = $.datepicker.parseDate;
function customParseDate( format, value, options ) {
if (format === 'mm.yy') {
var dt = (value + ".").split(".");
var month = parseInt(dt[0]) - 1;
var year = parseInt(dt[1]);
if (year < 100) {
year += 2000;
}
if (isNaN(month) || isNaN(year)) {
return null;
}
return new Date(year, month, 1);
} else {
return standardParseDate(format,value,options);
}
}
$.datepicker.parseDate = customParseDate;
JSFiddle:http://jsfiddle.net/3drfd35t/
关于javascript - 使用 jquery ui datepicker 重新聚焦相同的 datepicker 输入时显示错误的月份和年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29650802/