From 226cc3e9e57c7591ff6a2ee02ffed52ac97786a9 Mon Sep 17 00:00:00 2001 From: Jörn Zaefferer Date: Tue, 10 Jun 2014 13:51:25 +0200 Subject: Dialog: Honor preventDefault when managing focus If event.isDefaultPrevented() is true, the focus management is completely skipped, assuming the user manages focus manually. Fixes #10103 Closes gh-1265 --- tests/unit/dialog/dialog_core.js | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'tests/unit') diff --git a/tests/unit/dialog/dialog_core.js b/tests/unit/dialog/dialog_core.js index c97f9585b..d72fef7b5 100644 --- a/tests/unit/dialog/dialog_core.js +++ b/tests/unit/dialog/dialog_core.js @@ -41,7 +41,7 @@ test("widget method", function() { }); asyncTest( "focus tabbable", function() { - expect( 6 ); + expect( 8 ); var element, options = { buttons: [{ @@ -118,7 +118,30 @@ asyncTest( "focus tabbable", function() { setTimeout(function() { equal( document.activeElement, element.parent()[ 0 ], "6. the dialog itself" ); element.remove(); - start(); + setTimeout( step7 ); + }); + } + + function step7() { + element = $( "
" ).dialog({ + open: function() { + var inputs = $( this ).find( "input" ); + inputs.last().keydown(function( event ) { + event.preventDefault(); + inputs.first().focus(); + }); + } + }); + setTimeout(function() { + var inputs = element.find( "input" ); + equal( document.activeElement, inputs[ 1 ], "Focus starts on second input" ); + inputs.last().simulate( "keydown", { keyCode: $.ui.keyCode.TAB }); + setTimeout(function() { + equal( document.activeElement, inputs[ 0 ], + "Honor preventDefault, allowing custom focus management" ); + element.remove(); + start(); + }, 50 ); }); } -- cgit v1.2.3