diff --git a/js/src/dropdown.js b/js/src/dropdown.js index d336a46d91..1121a9819e 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -475,6 +475,10 @@ class Dropdown { const parent = Dropdown._getParentFromElement(this) const isActive = $(parent).hasClass(ClassName.SHOW) + if (!isActive && event.which === ESCAPE_KEYCODE) { + return + } + if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { if (event.which === ESCAPE_KEYCODE) { const toggle = parent.querySelector(Selector.DATA_TOGGLE) diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js index 1ecfd1f8bf..652ec480e9 100644 --- a/js/tests/unit/dropdown.js +++ b/js/tests/unit/dropdown.js @@ -67,6 +67,31 @@ $(function () { $dropdown.trigger($.Event('click')) }) + QUnit.test('should not open dropdown if escape key was pressed on the toggle', function (assert) { + assert.expect(1) + var done = assert.async() + var dropdownHTML = '