当使用没有年份的日期格式时,jquery datepicker返回错误的年份

时间:2012-09-12 14:19:51

标签: jquery-ui-datepicker

我使用jquery datepicker(v1.8.20),日期格式设置为'D MM d',如下所示:'Wed September 12'。当我从日历中选择与当前日期不同的年份时,getDate方法会返回当前年份。此外,当我再次打开日历时,保留选定的日期和月份,但是当前的年份会更改。通常,当日期格式不包含时,将年份设置为当前日期。知道怎么解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

Datepicker仅在input元素中存储值,因此如果格式字符串中没有年份,则datepicker不会存储它。 Here jquery.ui开发人员之一说,这不是一个错误,“Datepicker只是为了选择一个完整的日期”。

无论如何,我在我的项目中遇到了同样的问题,并通过丑陋的技巧解决了这个问题,迫使datepicker存储完整的日期:

(function($) {
    $.datepicker._selectDateParent = $.datepicker._selectDate;
    $.datepicker._adjustInstDateParent = $.datepicker._adjustInstDate;
    $.datepicker._adjustInstDate = function(inst, offset, period) {

        var fullDate = inst.input.data('fullDate');
        if(fullDate && !period) {
            inst.drawYear = inst.currentYear = fullDate.getFullYear();
        }

        this._adjustInstDateParent(inst, offset, period);
    };
    $.datepicker._selectDate = function(id, dateStr) {
        var target = $(id);
        var inst = this._getInst(target[0]);
        var date = this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
        inst.input.data('fullDate', date);

        this._selectDateParent(id, dateStr);
    }
})(jQuery);

我只使用datepicker 1.9.0+进行测试,我不确定,这是一个很好的解决方案,但它对我有用:)