mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Merge pull request #415 from pelme/1-8-stable
Backport of #6966 fix (multiple dialogs and ESC)
This commit is contained in:
commit
4c57f361ad
@ -88,4 +88,29 @@ test("#6645: Missing element not found check in overlay", function(){
|
|||||||
d1.add(d2).remove();
|
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);
|
})(jQuery);
|
||||||
|
4
ui/jquery.ui.dialog.js
vendored
4
ui/jquery.ui.dialog.js
vendored
@ -110,7 +110,7 @@ $.widget("ui.dialog", {
|
|||||||
// setting tabIndex makes the div focusable
|
// setting tabIndex makes the div focusable
|
||||||
// setting outline to 0 prevents a border on focus in Mozilla
|
// setting outline to 0 prevents a border on focus in Mozilla
|
||||||
.attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
|
.attr('tabIndex', -1).css('outline', 0).keydown(function(event) {
|
||||||
if (options.closeOnEscape && event.keyCode &&
|
if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
|
||||||
event.keyCode === $.ui.keyCode.ESCAPE) {
|
event.keyCode === $.ui.keyCode.ESCAPE) {
|
||||||
|
|
||||||
self.close(event);
|
self.close(event);
|
||||||
@ -748,7 +748,7 @@ $.extend($.ui.dialog.overlay, {
|
|||||||
|
|
||||||
// allow closing by pressing the escape key
|
// allow closing by pressing the escape key
|
||||||
$(document).bind('keydown.dialog-overlay', function(event) {
|
$(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) {
|
event.keyCode === $.ui.keyCode.ESCAPE) {
|
||||||
|
|
||||||
dialog.close(event);
|
dialog.close(event);
|
||||||
|
Loading…
Reference in New Issue
Block a user