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
|
datepicker_instActive = inst; // for delegate hover events
|
||||||
inst.dpDiv.empty().append(this._generateHTML(inst));
|
inst.dpDiv.empty().append(this._generateHTML(inst));
|
||||||
this._attachHandlers(inst);
|
this._attachHandlers(inst);
|
||||||
inst.dpDiv.find("." + this._dayOverClass + " a");
|
|
||||||
|
|
||||||
var origyearshtml,
|
var origyearshtml,
|
||||||
numMonths = this._getNumberOfMonths(inst),
|
numMonths = this._getNumberOfMonths(inst),
|
||||||
cols = numMonths[1],
|
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("");
|
inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
|
||||||
if (cols > 1) {
|
if (cols > 1) {
|
||||||
@ -2000,18 +2004,20 @@ function datepicker_bindHover(dpDiv) {
|
|||||||
$(this).removeClass("ui-datepicker-next-hover");
|
$(this).removeClass("ui-datepicker-next-hover");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.delegate(selector, "mouseover", function(){
|
.delegate( selector, "mouseover", datepicker_handleMouseover );
|
||||||
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");
|
function datepicker_handleMouseover() {
|
||||||
if (this.className.indexOf("ui-datepicker-prev") !== -1) {
|
if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {
|
||||||
$(this).addClass("ui-datepicker-prev-hover");
|
$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
|
||||||
}
|
$(this).addClass("ui-state-hover");
|
||||||
if (this.className.indexOf("ui-datepicker-next") !== -1) {
|
if (this.className.indexOf("ui-datepicker-prev") !== -1) {
|
||||||
$(this).addClass("ui-datepicker-next-hover");
|
$(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! */
|
/* jQuery extend now ignores nulls! */
|
||||||
|
Loading…
Reference in New Issue
Block a user