2013-07-18 30 views
8

Tab tuşunu kullanarak açılır menüden klavyeyi kullanarak gezinmek mümkün mü ve ok tuşlarını kullanarak açmanın alt öğelerine gitmek mümkün mü?Bootstrap açılır menüsünde menüyü etkinleştirme

<input type="text" value="click tab to jump to the drop down."/> 
<div class="bs-docs-example"> 
    <div class="dropdown clearfix"> 
     <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu" style="display: block; position: static; margin-bottom: 5px; *width: 180px;"> 
     <li><a tabindex="-1" href="#">Menu Item A</a></li> 
     <li><a tabindex="-1" href="#">Menu Item B</a></li> 
     <li><a tabindex="-1" href="#">Menu Item C</a></li> 
     <li class="divider"></li> 
     <li><a tabindex="-1" href="#">Menu Item A1</a></li> 
      <li class="dropdown-submenu"> 
       <a tabindex="-1" href="#">Menu Item B1</a> 
       <ul class="dropdown-menu"> 
        <li><a tabindex="-1" href="#">You should navigate here with the keyboard.</a></li> 
        <li><a tabindex="-1" href="#">Thanks For your Help!</a></li> 
       </ul> 
      </li> 
     </ul> 
    </div> 
</div> 

http://jsfiddle.net/MGwVM/1/

+0

Yanıt verdikten sonra düzenlediğinizi gördüm. Cevabımı gördün mü? – rybo111

+1

Geç yorum, ama ... Bugünlerde sadece ul.dropdown-menu'ye rol = "menu" ve div.navbar (= bootstrap 2 ve 3 de) için role = "navigation" ekleyebiliriz ve sanırım Klavye erişilebilirliğini oldukça iyi etkinleştirin. Ama sanırım sorunundaki html işaretlemesi bootstrap örneklerini takip etmiyor ... – djKianoosh

cevap

11

Güncelleme

Bootstrap şimdi standart olarak anahtarlarını yukarı/aşağı destekler: Burada

Şimdi sahip koddur.

Yani sadece get the key code (9) ve aşağıdakileri yapın açılan etkinleştirmek için Tab istiyorsanız:

$('.input-group input').keydown(function(e){ 
    if(e.which == 9){ // tab 
     e.preventDefault(); 
     $(this).parent().find('.dropdown-toggle').click(); 
     $(this).parent().find('.dropdown-menu a:first').focus(); 
    } 
}); 

Ve kullanıcı açılan odaklanmıştır zaman için daha fazla işlevsellik eklemek istiyorsanız menü öğesi:

$('.dropdown-menu a').keydown(function(e){ 
    switch(e.which){ 
     case 36: // home 
      e.preventDefault(); 
      $(this).closest('.dropdown-menu').find('a:first').focus(); 
      break; 
     case 35: // end 
      e.preventDefault(); 
      $(this).closest('.dropdown-menu').find('a:last').focus(); 
      break; 
    } 
}); 

bir demo için this JSFiddle bakınız.

+0

home/end ve letter navigasyon eksik :-) – xamiro

+0

@ xamiro-dev Güncellenen cevabı gör. [Anahtar kodunu bulmak] (http://keycode.info) ve bir anahtar kutusu eklemek suretiyle harfli navigasyon ekleyebilirsiniz. – rybo111

1

Güzel örnek.

Ancak, neden bir setTimeout ayarladınız? Bazı özel sebepler?

Aynı örnekte, zaman aşımı olmadan bir giriş seçim kutusunu simüle ettim. Check this out.

+0

Muhtemelen o anda tarayıcının bir tuhaftı. – rybo111

+1

@Emzor Eğer ilgileniyorsanız, kod şimdi güncellendi. – rybo111

+1

@ rybo111 Bilgi için çok teşekkürler :-) – Emzor

İlgili konular