diff --git a/js/dropdown.js b/js/dropdown.js index 200e1c67b4..0ba3f87f54 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -72,7 +72,7 @@ return $this.trigger('click') } - var desc = ' li:not(.divider):visible a' + var desc = ' li:not(.disabled):visible a' var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) if (!$items.length) return diff --git a/js/tests/unit/dropdown.js b/js/tests/unit/dropdown.js index ec718b9e01..67b2617446 100644 --- a/js/tests/unit/dropdown.js +++ b/js/tests/unit/dropdown.js @@ -314,4 +314,25 @@ $(function () { $dropdown.click() }) + QUnit.test('should skip disabled element when using keyboard navigation', function (assert) { + var dropdownHTML = '' + var $dropdown = $(dropdownHTML) + .appendTo('#qunit-fixture') + .find('[data-toggle="dropdown"]') + .bootstrapDropdown() + .click() + + $dropdown.trigger($.Event('keydown', { which: 40 })) + $dropdown.trigger($.Event('keydown', { which: 40 })) + + assert.ok(!$(document.activeElement).parent().is('.disabled'), '.disabled is not focused') + }) })