jQuery UI Datepicker奇怪的行为

时间:2013-06-06 06:29:37

标签: javascript jquery-ui jquery-ui-datepicker

使用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中测试过。

2 个答案:

答案 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);
}

小提琴:http://jsfiddle.net/huPSb/1/

答案 1 :(得分:2)

如果您使用此代码更改选择功能,一切都会正常工作

  onSelect: function (dateText, inst) {
         inst.drawMonth +=1; 
        $('#out').html(this.value);
    }

以下是工作示例http://jsfiddle.net/4FFnp/