Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to make bootstrap button dropdown menu selectable by keyboard

Bootstrap button dropdown: http://twitter.github.com/bootstrap/components.html#buttonDropdowns

When i select a button dropdown, i would like to use keyboard up/down to navigate between menu items and press enter to select one, just like http://twitter.github.com/bootstrap/javascript.html#dropdowns

Any ideas?

like image 591
Mike Avatar asked Mar 30 '13 15:03

Mike


2 Answers

Bootstrap has native support for keyboard navigation.

Just add role="menu" to your dropdown-menu

Here is an example, just save as .html and take a test

<html>
<head>
  <link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
</head>
<body>
  <div class="btn-group">
    <button class="btn btn-default">1</button>
    <button class="btn btn-default">2</button>
    <button class="btn btn-default">3</button>
  <div class="btn-group">
    <button class="btn btn-default dropdown-toggle" data-toggle="dropdown">menu</button>
      <ul class="dropdown-menu" role="menu">
        <li> <a href="#">one</a> </li>
        <li> <a href="#">two</a> </li>
        <li> <a href="#">three</a> </li>
      </ul>
    </div>
  </div>
</body>
</html>

http://jsfiddle.net/damphat/WJS9p/

like image 116
damphat Avatar answered Nov 05 '22 03:11

damphat


Possible reasons that this may not work in some cases:

  • Because you use a <div> or a <span> for .dropdown-toggle. Make it a <button> and it will work. Strange enough, not even this kind of element works: span.btn.btn-default.
  • Make sure your <a> element inside each <li> have an attribute of href="#" or href="" or generally has the attribute defined.
  • Make sure you have the role="menu" on the .dropdown-menu element.
like image 40
NoOne Avatar answered Nov 05 '22 02:11

NoOne