From b395f3526e267c267c2d099b7cfc13325d873ee9 Mon Sep 17 00:00:00 2001 From: vsn4ik Date: Thu, 8 Jan 2015 12:03:09 +0300 Subject: [PATCH] Dropdowns: Skip `.disabled` instead of `.divider` on keydown event Fixes #15147. Closes #15520 by merging it. --- js/dropdown.js | 2 +- js/tests/unit/dropdown.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) 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') + }) })