/ / jquery datepicker retorna ano errado ao usar o formato de data sem parte do ano - jquery-ui-datepicker

jquery datepicker retorna ano errado ao usar o formato de data sem parte do ano - jquery-ui-datepicker

Eu uso o jquery datepicker (v1.8.20) com o formato de data definido como "D MM d", que se parece com: "Wed 12 de setembro". Quando seleciono um ano diferente do atual em um calendário, o método getDate retorna o ano atual. Além disso, quando abro o calendário novamente, o dia e o mês selecionados são preservados, mas o ano é alterado para o atual. Geralmente, parece que o ano está definido como atual quando o formato da data não o contém. Alguma idéia de como consertar isso?

Respostas:

2 para resposta № 1

O datepicker armazena valor apenas no elemento de entrada; portanto, se você não possui um ano na string de formato, o datepicker simplesmente não o armazena. Aqui Um dos desenvolvedores do jquery.ui diz que isso não é um bug e "o Datepicker foi projetado apenas para escolher uma data completa".

Enfim, eu tive o mesmo problema no meu projeto e o resolvi com um truque feio, que força o datepicker a armazenar a data completa:

(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);

Eu testei apenas com o datepicker 1.9.0+ e não tenho certeza, se essa é uma boa solução, mas funciona para mim :)