我有类似自动提示的Facebook的这些文本字段和下拉菜单:
<input type="text" id="search" name="search_fld"/>
<div id="display">
<div class="display_box">Luca</div>
<div class="display_box">David</div>
<div class="display_box">Mark</div>
<div class="display_box">...</div>
</div>
我的CSS:
.display_box:hover
{
background:#3b5998;
color:#FFFFFF;
}
如何通过向下箭头键将“hover”状态从我的输入“search_fld”传递到第一个“display_box”,依此类推所有“display”div?
答案 0 :(得分:9)
你无法完美地模仿悬停状态..添加具有相同风格的“真实”类是无法逃脱的:
.display_box_hover, .display_box:hover
{
background:#3b5998;
color:#FFFFFF;
}
现在这段代码将“导航”元素:
window.displayBoxIndex = -1;
$("#search").keyup(function(e)
{
if (e.keyCode == 40)
{
Navigate(1);
}
if(e.keyCode==38)
{
Navigate(-1);
}
});
var Navigate = function(diff) {
displayBoxIndex += diff;
var oBoxCollection = $(".display_box");
if (displayBoxIndex >= oBoxCollection.length)
displayBoxIndex = 0;
if (displayBoxIndex < 0)
displayBoxIndex = oBoxCollection.length - 1;
var cssClass = "display_box_hover";
oBoxCollection.removeClass(cssClass).eq(displayBoxIndex).addClass(cssClass);
}
这将“记住”最后一个“selected”元素的索引并切换到next或previous元素,使用eq()
函数并将上面的类添加到所选元素。
答案 1 :(得分:4)
当然很难看。在小提琴上here。
<script src="jquery.js"></script>
<script>
$(function (){
$('.display_box').hover(function (){
$(this).attr('class', 'display_box current')
}, function (){
$(this).attr('class', 'display_box');
});
$('#search').keyup(
function (e){
var curr = $('#display').find('.current');
if (e.keyCode == 40)
{
if(curr.length)
{
$(curr).attr('class', 'display_box');
$(curr).next().attr('class', 'display_box current');
}
else{
$('#display div:first-child').attr('class', 'display_box current');
}
}
if(e.keyCode==38)
{
if(curr.length)
{
$(curr).attr('class', 'display_box');
$(curr).prev().attr('class', 'display_box current');
}
else{
$('#display div:last-child').attr('class', 'display_box current');
}
}
}
)
});
</script>
<style>
.current{
background:#3b5998;
color:#FFFFFF;
}
</style>
<input type="text" id="search" name="search_fld"/>
<div id="display">
<div class="display_box current">Luca</div>
<div class="display_box">David</div>
<div class="display_box">Mark</div>
<div class="display_box">...</div>
</div>
答案 2 :(得分:1)
为了实现自我提交文本字段,最好使用“datalist”标记,如下所示:
<input list="search" name="search_fld"/>
<datalist id="search">
<option value="Luca"/>
<option value="David"/>
<option value="Mark"/>
</datalist>
从此处获取有关datalist标记的更多详细信息:http://www.w3schools.com/tags/tag_datalist.asp
答案 3 :(得分:0)
您可以使用箭头键作为输入字段背景,使用css /使用背景箭头图像在输入字段上使用覆盖范围,并使用css或js使其在悬停状态下可见