Fer*_*eto 5 javascript html5 css3 bootstrap-typeahead twitter-bootstrap-3
我正在使用Bootstrap 3,我有一个自动输入.问题是我希望<ul>用键盘键滚动,但它不起作用.我认为使用箭头键滚动是默认行为,但没有<ul>做到.以下是发生的事情:

如果我按两次向下键:

我使用的是预输入由Bassjobsen开发.
HTML代码:
<input type="text" class="form-control" data-provide="typeahead" id="test">
Run Code Online (Sandbox Code Playgroud)
Javascript(使用JQuery.js)代码:
$('document').ready (function () {
$('#test').typeahead({
source: ['algo', 'pepe', 'algo2', 'algo34', 'pepe3', 'algo42'],
items: 'all',
minLength: 2
});
});
Run Code Online (Sandbox Code Playgroud)
我设置items要all显示的所有项目source.这就是我需要滚动它们的原因.
我将这个内联样式添加到生成的<ul>:
style="max-height: 50px; overflow-y: auto;"
Run Code Online (Sandbox Code Playgroud)
所以这是Bassjobsens库生成的代码:
<ul class=" dropdown-menu" style="max-height: 50px; overflow-y: auto; top: 73px; left: 20px; display: none;" "="">
<li class="active">
<a href="#"><strong>al</strong>go</a>
</li>
<li>
<a href="#"><strong>al</strong>go2</a>
</li>
<li>
<a href="#"><strong>al</strong>go34</a>
</li>
<li>
<a href="#"><strong>al</strong>go42</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
最终编辑:
好吧,我开始很高兴地解决这个问题,最后(希望您仍然需要该解决方案!)这是一个可行的解决方案,基于我之前发布的内容。我希望这是您正在寻找的!
$('#test').keydown(function(e) {
if($('.dropdown-menu').is(':visible')) {
var menu = $('.dropdown-menu');
var active = menu.find('.active');
var height = active.outerHeight(); //Height of <li>
var top = menu.scrollTop(); //Current top of scroll window
var menuHeight = menu[0].scrollHeight; //Full height of <ul>
//Up
if(e.keyCode == 38) {
if(top != 0) {
//All but top item goes up
menu.scrollTop(top - height);
} else {
//Top item - go to bottom of menu
menu.scrollTop(menuHeight + height);
}
}
//Down
if(e.keyCode == 40) {
//window.alert(menuHeight - height);
var nextHeight = top + height; //Next scrollTop height
var maxHeight = menuHeight - height; //Max scrollTop height
if(nextHeight <= maxHeight) {
//All but bottom item goes down
menu.scrollTop(top + height);
} else {
//Bottom item - go to top of menu
menu.scrollTop(0);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)