]> source.dussan.org Git - jquery-ui.git/commitdiff
Draggable: Only blur the focused element if the event occurs on a handle
authorTJ VanToll <tj.vantoll@gmail.com>
Fri, 15 Aug 2014 15:09:19 +0000 (11:09 -0400)
committerMike Sherov <mike.sherov@gmail.com>
Sun, 17 Aug 2014 18:13:20 +0000 (14:13 -0400)
Fixes #10527

ui/draggable.js

index 3e427babecca798fe6fc7ae29f0a7885b40f87f6..3cae40f119ff0bd4c9b1f3f0dccb440b11517a10 100644 (file)
@@ -94,20 +94,9 @@ $.widget("ui.draggable", $.ui.mouse, {
        },
 
        _mouseCapture: function(event) {
+               var o = this.options;
 
-               var document = this.document[ 0 ],
-                       o = this.options;
-
-               // support: IE9
-               // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
-               try {
-                       // Support: IE9+
-                       // If the <body> is blurred, IE will switch windows, see #9520
-                       if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) {
-                               // Blur any element that currently has focus, see #4261
-                               $( document.activeElement ).blur();
-                       }
-               } catch ( error ) {}
+               this._blurActiveElement( event );
 
                // among others, prevent a drag on a resizable-handle
                if (this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0) {
@@ -134,6 +123,27 @@ $.widget("ui.draggable", $.ui.mouse, {
 
        },
 
+       _blurActiveElement: function() {
+               var document = this.document[ 0 ];
+
+               // support: IE9
+               // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
+               try {
+
+                       // Support: IE9, IE10
+                       // If the <body> is blurred, IE will switch windows, see #9520
+                       if ( document.activeElement && document.activeElement.nodeName.toLowerCase() !== "body" ) {
+
+                               // Only need to blur if the event occurred on the draggable, see #10527
+                               if ( this.handleElement.is( event.target ) ) {
+
+                                       // Blur any element that currently has focus, see #4261
+                                       $( document.activeElement ).blur();
+                               }
+                       }
+               } catch ( error ) {}
+       },
+
        _mouseStart: function(event) {
 
                var o = this.options;