]> source.dussan.org Git - jquery-ui.git/commitdiff
Dialog: Fix shift-tab handling, focus the correct element 1264/head
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Tue, 10 Jun 2014 10:38:26 +0000 (12:38 +0200)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Tue, 10 Jun 2014 11:54:58 +0000 (13:54 +0200)
Copy-paste error introduced in df6110c0d424ff3306fdd5576011f2dcf4d242d0

Updates the tabbing test to be more specific about which element should
have focus, instead of only checking if focus is within the dialog.

Ref #9646
Ref #10103
Closes gh-1264

tests/unit/dialog/dialog_core.js
ui/dialog.js

index c08019da9f69c447ffcfca4bb09806a4688314df..c97f9585b34b6cf29801ce336aa43df3fe9a6ded 100644 (file)
@@ -140,12 +140,14 @@ test( "#7960: resizable handles below modal overlays", function() {
 asyncTest( "Prevent tabbing out of dialogs", function() {
        expect( 3 );
 
-       var element = $( "<div><input><input></div>" ).dialog(),
-               inputs = element.find( "input" ),
-               widget = element.dialog( "widget" )[ 0 ];
+       var element = $( "<div><input name='0'><input name='1'></div>" ).dialog(),
+               inputs = element.find( "input" );
+
+       // Remove close button to test focus on just the two buttons
+       element.dialog( "widget" ).find( ".ui-button").remove();
 
        function checkTab() {
-               ok( $.contains( widget, document.activeElement ), "Tab key event moved focus within the modal" );
+               equal( document.activeElement, inputs[ 0 ], "Tab key event moved focus within the modal" );
 
                // check shift tab
                $( document.activeElement ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB, shiftKey: true });
@@ -153,15 +155,15 @@ asyncTest( "Prevent tabbing out of dialogs", function() {
        }
 
        function checkShiftTab() {
-               ok( $.contains( widget, document.activeElement ), "Shift-Tab key event moved focus within the modal" );
+               equal( document.activeElement, inputs[ 1 ], "Shift-Tab key event moved focus back to second input" );
 
                element.remove();
                setTimeout( start );
        }
 
-       inputs[1].focus();
+       inputs[ 1 ].focus();
        setTimeout(function() {
-               equal( document.activeElement, inputs[1], "Focus set on second input" );
+               equal( document.activeElement, inputs[ 1 ], "Focus set on second input" );
                inputs.eq( 1 ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB });
 
                setTimeout( checkTab );
index 35800088107bd43d2952a731ebe2bbd151b2a0b6..7998b042c46106cb000ba31bcb9547b454eecd5b 100644 (file)
@@ -348,7 +348,7 @@ return $.widget( "ui.dialog", {
                                        event.preventDefault();
                                } else if ( ( event.target === first[0] || event.target === this.uiDialog[0] ) && event.shiftKey ) {
                                        this._delay(function() {
-                                               first.focus();
+                                               last.focus();
                                        });
                                        event.preventDefault();
                                }