diff options
| -rw-r--r-- | js/dropdown.js | 2 | ||||
| -rw-r--r-- | js/tests/unit/dropdown.js | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/js/dropdown.js b/js/dropdown.js index 200e1c67b..0ba3f87f5 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 ec718b9e0..67b261744 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 = '<ul class="tabs">' + + '<li class="dropdown">' + + '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' + + '<ul class="dropdown-menu" role="menu">' + + '<li class="disabled"><a href="#">Disabled link</a></li>' + + '<li><a href="#">Another link</a></li>' + + '</ul>' + + '</li>' + + '</ul>' + 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') + }) }) |
