JQuery-UI datepicker выдает ошибку, когда я взломаю кнопку «сегодня», чтобы также выбрать дату, но только в IE - PullRequest
0 голосов
/ 24 января 2012

Я использовал различные «исправления», чтобы кнопка сегодня также выбирала дату, и до сих пор все они прекрасно работали в Firefox, но при их использовании IE выдает ошибки.Всякий раз, когда я щелкаю сегодня, выбирается дата, поле ввода обновляется, а средство выбора даты закрывается, но IE немедленно открывает другой средство выбора даты, которое нельзя закрыть, если вы не открываете новое средство выбора даты.

Это код средства выбора даты сисправления, которые я использовал

var $j = jQuery.noConflict();            
            $j('#data1, #data2').datepicker({ dayNames: ['Duminica', 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sambata'], dayNamesMin: ['Du', 'Lu', 'Ma', 'Mi', 'Jo', 'Vi', 'Sa'], firstDay: 1,
                monthNames: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie','Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], 
                monthNamesShort: ['Ian','Feb','Mar','Apr','Mai','Iun','Iul','Aug','Sep','Oct','Noi','Dec'],
                showOtherMonths: true,
                selectOtherMonths: true,            
                dateFormat: 'yy-mm-dd',
                defaultDate: new Date(),
                changeMonth: true,
                showButtonPanel: true, currentText: 'Astazi',
                changeYear: true    
            });

Первое исправление, которое я использовал:

$j('button.ui-datepicker-current').live('click', function() {
$j.datepicker._curInst.input.datepicker('setDate', new Date()).datepicker('hide');
});

сразу после инициализации средства выбора даты.

Также переписал функцию с помощью

var _gotoToday = jQuery.datepicker._gotoToday;
// datepicker is directly inside the jQuery object, so override that
jQuery.datepicker._gotoToday = function(a){
var target = jQuery(a);
var inst = this._getInst(target[0]);
// call the old function, so default behaviour is kept
_gotoToday.call(this, a);
// now do an additional call to _selectDate which will set the date and close
// close the datepicker (if it is not inline)
jQuery.datepicker._selectDate(a, 
jQuery.datepicker._formatDate(inst,inst.selectedDay, inst.selectedMonth,  inst.selectedYear));
}

Также попытался просто добавить

this._setDateDatepicker(target, new Date());
this._selectDate(id, this._getDateDatepicker(target));

в конце функции _gotoToday

Все они сделали именно то, что вы ожидаете в Firefox, но оставили меня с проблемой, которую я упомянулвыше при использовании с IE.

1 Ответ

2 голосов
/ 29 мая 2012

Для меня это работает, также в IE:

jQuery.datepicker._gotoToday = function(id) {
    var today = new Date();
    var dateRef = jQuery("<td><a>" + today.getDate() + "</a></td>");
    this._selectDay(id, today.getMonth(), today.getFullYear(), dateRef);
};
...