使用jqueryUI处理简单的datepicker时,我遇到了一个奇怪的问题。我只想显示最后一个月和当月的两个月日历。我用了这段代码:
$(function () {
$('#picker').datepicker({
numberOfMonths: 2,
showCurrentAtPos: 1,
dateFormat: "yy-mm-dd",
onSelect: function () {
$('#out').html(this.value);
}
});
});
<div id="picker"></div>
<output id="out"></output>
它显示我想要的但有一个奇怪的行为,你可以在这里查看:
http://jsfiddle.net/xgvargas/UCbxf/
当您选择日期时,它会跳转到其他月份,在某些情况下,所选日期将不再可见,即使它返回的日期是正确的。
如果你删除 showCurrentAtPos:1 这一行,那么这种行为会停止,但在这种情况下,我会有当前月份和下一个月,这不是我需要的。
这是一个错误还是我伪造的东西?
顺便说一下,我正在使用最后一个版本的jquery和jqueryUI。目前只在Chrome中测试过。
答案 0 :(得分:3)
这是一个jQuery UI datepicker错误ticket它发生在datepicker计算和绘制月份时,并且不能很好地使用showCurrentAtPos
定义的当前月份差异。
一种可能的解决方案是将此代码块添加到票证中报告的jquery.ui.datepicker.js
文件中:
if (inst.drawMonth == showCurrentAtPos){
drawMonth = inst.drawMonth - showCurrentAtPos;
} else{
drawMonth = inst.drawMonth;
}
或按照您的想法在onSelect
函数中应用补丁:
onSelect: function (dateText, datePicker) {
datePicker.drawMonth += $("#picker").datepicker("option", "showCurrentAtPos");
$('#out').html(this.value);
}
答案 1 :(得分:2)
如果您使用此代码更改选择功能,一切都会正常工作
onSelect: function (dateText, inst) {
inst.drawMonth +=1;
$('#out').html(this.value);
}
以下是工作示例http://jsfiddle.net/4FFnp/