Dialog: Tabbing out of a modal dialog was possible because keypress doesn't fire for tabs everywhere, switched to keyup. Added Unit Test - Caught by @DomenicDenicola - Fixes #3123 - Tabbing stops in modal dialog

This commit is contained in:
Corey Frang 2011-08-19 06:03:59 -05:00
parent fb57cc8aba
commit 96e5c241e1
2 changed files with 31 additions and 2 deletions

View File

@ -3,7 +3,36 @@
*/ */
(function($) { (function($) {
module("dialog: tickets"); module( "dialog: tickets" );
asyncTest( "#3123: Prevent tabbing out of modal dialogs", function() {
expect( 3 );
var el = $( "<div><input id='t3123-first'><input id='t3123-last'></div>" ).dialog({ modal: true }),
inputs = el.find( "input" ),
widget = el.dialog( "widget" );
inputs.eq( 1 ).focus();
equal( document.activeElement, inputs[1], "Focus set on second input" );
inputs.eq( 1 ).simulate( "keyup", { keyCode: $.ui.keyCode.TAB });
setTimeout( checkTab, 2 );
function checkTab() {
ok( $.contains( widget, document.activeElement ), "Tab key event moved focus within the modal" );
// check shift tab
$( document.activeElement ).simulate( "keydown", { keyCode: $.ui.keyCode.TAB, shiftKey: true });
setTimeout( checkShiftTab, 2 );
}
function checkShiftTab() {
ok( $.contains( widget, document.activeElement ), "Shift-Tab key event moved focus within the modal" );
el.remove();
start();
}
});
test("#4826: setting resizable false toggles resizable on dialog", function() { test("#4826: setting resizable false toggles resizable on dialog", function() {
expect(6); expect(6);

View File

@ -293,7 +293,7 @@ $.widget("ui.dialog", {
// prevent tabbing out of modal dialogs // prevent tabbing out of modal dialogs
if ( options.modal ) { if ( options.modal ) {
uiDialog.bind( "keypress.ui-dialog", function( event ) { uiDialog.bind( "keyup.ui-dialog", function( event ) {
if ( event.keyCode !== $.ui.keyCode.TAB ) { if ( event.keyCode !== $.ui.keyCode.TAB ) {
return; return;
} }