mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Dialog: Before handling escape key presses, check if the default action has been prevented. Fixes #6966 - Pressing ESC on dialog when 2 dialogs are open closes both dialogs.
This commit is contained in:
parent
3a0ec399cd
commit
f9996682b5
@ -88,4 +88,29 @@ test("#6645: Missing element not found check in overlay", function(){
|
||||
d1.add(d2).remove();
|
||||
});
|
||||
|
||||
test("#6966: Escape key closes all dialogs, not the top one", function(){
|
||||
expect(8);
|
||||
// test with close function removing dialog
|
||||
d1 = $('<div title="dialog 1">Dialog 1</div>').dialog({modal: true});
|
||||
d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove()}});
|
||||
ok(d1.dialog("isOpen"), 'first dialog is open');
|
||||
ok(d2.dialog("isOpen"), 'second dialog is open');
|
||||
d2.simulate("keydown", {keyCode: $.ui.keyCode.ESCAPE});
|
||||
ok(d1.dialog("isOpen"), 'first dialog still open');
|
||||
ok(!d2.data('dialog'), 'second dialog is closed');
|
||||
d2.remove();
|
||||
d1.remove();
|
||||
|
||||
// test without close function removing dialog
|
||||
d1 = $('<div title="dialog 1">Dialog 1</div>').dialog({modal: true});
|
||||
d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true});
|
||||
ok(d1.dialog("isOpen"), 'first dialog is open');
|
||||
ok(d2.dialog("isOpen"), 'second dialog is open');
|
||||
d2.simulate("keydown", {keyCode: $.ui.keyCode.ESCAPE});
|
||||
ok(d1.dialog("isOpen"), 'first dialog still open');
|
||||
ok(!d2.dialog("isOpen"), 'second dialog is closed');
|
||||
d2.remove();
|
||||
d1.remove();
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
|
4
ui/jquery.ui.dialog.js
vendored
4
ui/jquery.ui.dialog.js
vendored
@ -97,7 +97,7 @@ $.widget("ui.dialog", {
|
||||
// TODO: move to stylesheet
|
||||
.css( "outline", 0 )
|
||||
.keydown(function( event ) {
|
||||
if ( options.closeOnEscape && event.keyCode &&
|
||||
if ( options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
|
||||
event.keyCode === $.ui.keyCode.ESCAPE ) {
|
||||
self.close( event );
|
||||
event.preventDefault();
|
||||
@ -699,7 +699,7 @@ $.extend( $.ui.dialog.overlay, {
|
||||
|
||||
// allow closing by pressing the escape key
|
||||
$( document ).bind( "keydown.dialog-overlay", function( event ) {
|
||||
if ( dialog.options.closeOnEscape && event.keyCode &&
|
||||
if ( dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
|
||||
event.keyCode === $.ui.keyCode.ESCAPE ) {
|
||||
|
||||
dialog.close( event );
|
||||
|
Loading…
Reference in New Issue
Block a user