我有以下代码片段:
<div id="listbox1div" style="z-index:95; background:white; overflow-y:auto; overflow-x:hidden; width:240; height:314px;"> <a id="focusLink2"></a> <table id="ptObj_listbox1...
我有一个正在构建的页面<div>动态元素(如上面)。这<div>在主屏幕顶部显示数据。当页面生成 div 时,我想设置焦点。我无法在 body 标记上放置 onLoad 函数,因为我不知道何时生成 div。
<div>
A <div>标签不能直接将焦点设置在其上。所以我放了一个空<a>带有我在以下函数中调用的 id 的标记:
<a>
function setTableFocus(count){ var flinkText = 'focusLink'+count; document.getElementById(flinkText).focus(); }
我没有收到任何错误,并且我知道在显示页面时(通过警报)正在调用该函数。但是,当我使用箭头键或 Enter 按钮时,整个页面都会移动(甚至不包括显示数据的 div)。
当我单击其中一个表格元素时(使用鼠标)。之后 keydown 事件开始工作。我希望这样做是将数据呈现给用户并自动由键盘驱动。
有人对我如何实现这一目标有任何建议吗?
你可以做一个div如果添加一个可聚焦的tabindex属性。
div
tabindex
see: http://snook.ca/archives/accessibility_and_usability/elements_focusable_with_tabindex
tabindex 值可以允许一些有趣的行为。 如果给定值“-1”,则无法使用 Tab 键定位该元素,但可以获得焦点 以编程方式赋予元素(使用 element.focus())。 如果给定值为 0,则该元素可以通过键盘获得焦点,并且 落入文档的选项卡流程中。 大于 0 的值创建一个优先级,其中 1 是最重要的。
tabindex 值可以允许一些有趣的行为。
UPDATE:添加了一个简单的演示http://jsfiddle.net/rorkules/sXj9m/