Fix #12868. Use native focus/blur to get event order right.

This commit is contained in:
Dave Methvin
2012-11-23 15:03:55 -05:00
parent 1fb2f92c35
commit b7ec6ddd45
2 changed files with 63 additions and 1 deletions

View File

@@ -526,16 +526,34 @@ jQuery.event = {
click: {
// For checkbox, fire native event so checked state will be right
trigger: function() {
if ( jQuery.nodeName( this, "input") && this.type === "checkbox" && this.click ) {
if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
this.click();
return false;
}
}
},
focus: {
// Fire native event if possible so blur/focus sequence is correct
trigger: function() {
if ( this !== document.activeElement && this.focus ) {
try {
this.focus();
return false;
} catch ( e ) {
// IE<9 dies on focus to hidden element (#1486,#12518)
// If this happens, let .trigger() run the handlers
}
}
},
delegateType: "focusin"
},
blur: {
trigger: function() {
if ( this === document.activeElement && this.blur ) {
this.blur();
return false;
}
},
delegateType: "focusout"
},