From b7ec6ddd45e27b54f3e094172b7eeb6949d4f71b Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Fri, 23 Nov 2012 15:03:55 -0500 Subject: Fix #12868. Use native focus/blur to get event order right. --- src/event.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/event.js') diff --git a/src/event.js b/src/event.js index aeee603f7..e92336a91 100644 --- a/src/event.js +++ b/src/event.js @@ -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" }, -- cgit v1.2.3