0

jquery datepicker (v1.8.20) を使用し、日付形式を「D MM d」に設定します。これは、「Wed September 12」のようになります。カレンダーから現在の年とは異なる年を選択すると、getDate メソッドは現在の年を返します。さらに、カレンダーを再度開くと、選択した日と月の両方が保持されますが、年は現在のものに変更されます。通常、日付形式に年が含まれていない場合、年は現在の年に設定されているように見えます。それを修正する方法はありますか?

4

1 に答える 1

3

Datepickerは値を入力要素にのみ格納するため、フォーマット文字列に年がない場合、datepickerは単にそれを格納しません。ここで、jquery.ui開発者の1人は、これはバグではなく、「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);

私はdatepicker1.9.0+でのみテストしましたが、これが良い解決策であるかどうかはわかりませんが、私にとってはうまくいきます:)

于 2012-11-27T15:34:02.420 に答える