mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Datepicker: Abstract mouseover logic to avoid explicit event trigger
The reliance on `.mouseover()` caused an issue in some circumstances (see #5816). The removal of `.mouseover()` broke keyboard navigation (see #10319). Fixes #10319 Closes gh-1290
This commit is contained in:
parent
69f25dbff7
commit
c399f1f77a
@ -799,12 +799,16 @@ $.extend(Datepicker.prototype, {
|
||||
datepicker_instActive = inst; // for delegate hover events
|
||||
inst.dpDiv.empty().append(this._generateHTML(inst));
|
||||
this._attachHandlers(inst);
|
||||
inst.dpDiv.find("." + this._dayOverClass + " a");
|
||||
|
||||
var origyearshtml,
|
||||
numMonths = this._getNumberOfMonths(inst),
|
||||
cols = numMonths[1],
|
||||
width = 17;
|
||||
width = 17,
|
||||
activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
|
||||
|
||||
if ( activeCell.length > 0 ) {
|
||||
datepicker_handleMouseover.apply( activeCell.get( 0 ) );
|
||||
}
|
||||
|
||||
inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
|
||||
if (cols > 1) {
|
||||
@ -2000,18 +2004,20 @@ function datepicker_bindHover(dpDiv) {
|
||||
$(this).removeClass("ui-datepicker-next-hover");
|
||||
}
|
||||
})
|
||||
.delegate(selector, "mouseover", function(){
|
||||
if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? dpDiv.parent()[0] : datepicker_instActive.input[0])) {
|
||||
$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
|
||||
$(this).addClass("ui-state-hover");
|
||||
if (this.className.indexOf("ui-datepicker-prev") !== -1) {
|
||||
$(this).addClass("ui-datepicker-prev-hover");
|
||||
}
|
||||
if (this.className.indexOf("ui-datepicker-next") !== -1) {
|
||||
$(this).addClass("ui-datepicker-next-hover");
|
||||
}
|
||||
}
|
||||
});
|
||||
.delegate( selector, "mouseover", datepicker_handleMouseover );
|
||||
}
|
||||
|
||||
function datepicker_handleMouseover() {
|
||||
if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {
|
||||
$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
|
||||
$(this).addClass("ui-state-hover");
|
||||
if (this.className.indexOf("ui-datepicker-prev") !== -1) {
|
||||
$(this).addClass("ui-datepicker-prev-hover");
|
||||
}
|
||||
if (this.className.indexOf("ui-datepicker-next") !== -1) {
|
||||
$(this).addClass("ui-datepicker-next-hover");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* jQuery extend now ignores nulls! */
|
||||
|
Loading…
Reference in New Issue
Block a user