2013-07-18 17 views
8

में कीबोर्ड नेविगेशन को सक्षम करने से यह टैब का उपयोग कर ड्रॉप डाउन मेनू के लिए कीबोर्ड का उपयोग कर जाएँ, और ड्रॉप डाउन के उप तत्वों के लिए तीर कुंजियों का उपयोग नेविगेट करने के लिए संभव है?बूटस्ट्रैप लटकती-मेनू

<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

मुझे जवाब देने के बाद मैंने संपादित किया है। क्या तुमने मेरा जवाब देखा? – rybo111

+1

देर से टिप्पणी, लेकिन ... मुझे लगता है कि आजकल हम ul.dropdown-menu और भूमिका = "नेविगेशन" में div.navbar (बूटस्ट्रैप 2 और 3 दोनों में) में भूमिका = "मेनू" जोड़ सकते हैं और ऐसा लगता है कि ऐसा लगता है कुंजीपटल अभिगम्यता बहुत अच्छी तरह से सक्षम करें। लेकिन मुझे लगता है कि आपके प्रश्न में एचटीएमएल मार्कअप बूटस्ट्रैप उदाहरणों का पालन नहीं करता है ... – djKianoosh

उत्तर

11

अद्यतन

बूटस्ट्रैप अब मानक के रूप में कुंजी ऊपर/नीचे का समर्थन करता है:

यहाँ कोड मैं अब है।

तो अगर आप लटकती सक्रिय करने के लिए, बस get the key code (9) और निम्न कार्य करें टैब हैं:

$('.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(); 
    } 
}); 

और तुम जब उपयोगकर्ता एक लटकती पर केंद्रित है के लिए आगे कार्यक्षमता जोड़ने के लिए चाहते हैं, तो मेनू आइटम:

$('.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; 
    } 
}); 

एक डेमो के लिए this JSFiddle देखें।

+0

घर/अंत और अक्षर नेविगेशन गायब है :-) – xamiro

+0

@ xamiro-dev अद्यतन उत्तर देखें। आप [कुंजीकोड ढूंढना] (http://keycode.info) और एक स्विच केस जोड़कर अक्षर नेविगेशन जोड़ सकते हैं। – rybo111

1

अच्छा उदाहरण।

लेकिन, आपने setTimeout क्यों सेट किया? कुछ विशिष्ट कारण?

setTimeout(function(){ 
    $(".search-option:first").focus(); 
},100); 

मैंने एक ही उदाहरण बनाया, बिना किसी टाइमआउट के इनपुट इनपुट बॉक्स को सिमुलेट किया। Check this out

+0

यह संभावना है कि उस समय ब्राउज़र का एक क्विर्क था। – rybo111

+1

@Emzor यदि आप रुचि रखते हैं तो कोड अब अपडेट कर दिया गया है। – rybo111

+1

@ rybo111 जानकारी के लिए बहुत बहुत धन्यवाद :-) – Emzor