mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
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:
parent
fb57cc8aba
commit
96e5c241e1
@ -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);
|
||||||
|
2
ui/jquery.ui.dialog.js
vendored
2
ui/jquery.ui.dialog.js
vendored
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user