aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvsn4ik <[email protected]>2015-01-08 12:03:09 +0300
committerHeinrich Fenkart <[email protected]>2015-02-26 06:42:09 +0100
commitb395f3526e267c267c2d099b7cfc13325d873ee9 (patch)
tree30164d0185fe1aa06b16280dc37b6a748c93b34f
parent5debbec59f3d6c4d5c4feef9c53c0108b7b69208 (diff)
downloadbootstrap-b395f3526e267c267c2d099b7cfc13325d873ee9.tar.xz
bootstrap-b395f3526e267c267c2d099b7cfc13325d873ee9.zip
Dropdowns: Skip `.disabled` instead of `.divider` on keydown event
Fixes #15147. Closes #15520 by merging it.
-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')
+ })
})