我在 ASP.NET MVC4 Web 应用程序中使用Fancybox 2.1.5在<ul>
. 为了让用户更轻松,我启用了按键事件来向上和向下导航结果<li>
。用户可以使用鼠标滚动和选择或使用键盘选择项目并继续。
我发现如果要显示的数据大于一定数量并且创建了垂直滚动条(注意:Fancybox 设置了 maxHeight 属性),当使用键盘向下导航列表时,如果所选项目熄灭花式框窗口/对话框滚动条不会像您使用鼠标滚轮滚动时那样移动以跟踪它。
有谁知道当我使用键盘时如何让 Fancybox 手动滚动?
我尝试过处理溢出的 CSS 设置和花式滚动属性,但这无济于事。我确定我需要在手动导航时触发一个事件..
html
<div id='myDiv'>
<ul>
<li>Apple</li>
<li>Orange</li>
<li>Pear</li>
</ul>
</div>
Fancybox JS 公司 键盘设置
$.fancybox.open($("#myDiv"), {
minHeight: 0,
maxHeight: 300,
afterShow: function () {
$(document).on("keydown", function (e) {
setupKeyboardEvents(e);
})
},
afterClose: function () {
$(document).off("keydown");
}
});
function setupKeyboardEvents(e) {
var $selected = $("#myDiv ul li.highlight"),
$li = $("#myDiv ul li");
if (e.keyCode == 40) { /* Down */
if (!$selected.length) {
$li.eq(0).addClass('highlight')
}
else {
$selected.removeClass('highlight');
if (!$selected.next().length) {
$li.eq(0).addClass('highlight')
} else {
$selected.next().addClass('highlight');
}
}
} else if (e.keyCode === 38) { /* Up */
if (!$selected.length) {
$li.eq(-1).addClass('highlight')
}
else {
$selected.removeClass('highlight');
if (!$selected.prev().length) {
$li.eq(-1).addClass('highlight')
} else {
$selected.prev().addClass('highlight');
}
}
} else if (e.keyCode == 13) { /* Enter */
if ($selected.length) {
// CONTINUE..
}
return false;
}
}