aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/dropdown.js2
-rw-r--r--js/tests/unit/dropdown.js21
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')
+ })
})