2017-05-29 28 views
2

HTML:防止下拉收盤的keydown

<input id="input-smth`enter code here`" type="text" name="region" placeholder="Region" /> 

<ul class="nav"> <!-- "KB Menu" --> 
    <li class="dropdown kb_menu hideit"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown">Knowledge Bases<b class="caret"></b></a> 
     <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" id="kb_menu"> 
     <li>1</li> 
     <li>2</li> 
     <li>3</li> 
     </ul> 
    </li> 
</ul> 

的Javascript:

$('#input-smth').on('keydown', function(event){ 
    $('#kb_menu').dropdown('toggle'); 
    event.stopPropagation(); 

}); 

當輸入下拉打開,但隨後在第二類型,它關閉。當我繼續打字時,如何防止打開並保持打開下拉菜單?

回答

3


否則一個簡單的控制器應該做的伎倆。

您可以使用​​顯示並添加一個按鈕以關閉它或在其關閉焦點時將其隱藏。

顯示了​​隱藏時focusout

$('#input-smth').on('keydown', function(event){ 
    $('#kb_menu').show(); 
    event.stopPropagation(); 
}); 

$("#input-smth").focusout(function() { 
    $('#kb_menu').hide(); 
}); 

此外JsFiddle

+0

感謝。它有幫助。 – ILya

+0

很高興幫助。 :) – Hevar

0

如果您將toggle更改爲open

$('#kb_menu').dropdown('open'); 

我只是猜測open可以是一個解決方案,我不知道你正在使用的下拉插件。由於您使用toggle它會做到這一點,切換(顯示/隱藏)每次的keydown

var isOpen = false; 
$('#input-smth').on('keydown', function(event){ 
    // If is open don't go any further 
    if (isOpen) { return } 
    // Otherwise toggle the menu 
    $('#kb_menu').dropdown('toggle'); 
    event.stopPropagation(); 
    isOpen = true 
});