将键盘焦点设置为
我有以下代码片段:
<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 时,我想设置焦点。我无法在 body 标记上放置 onLoad 函数,因为我不知道何时生成 div。
function setTableFocus(count){
var flinkText = 'focusLink'+count;
document.getElementById(flinkText).focus();
}
我没有收到任何错误,并且我知道在呈现页面时正在调用该函数(通过警报)。但是,当我使用箭头键或 Enter 按钮时,整个页面都会移动(甚至不包括显示数据的 div)。
当我单击其中一个表格元素时(使用鼠标)。之后 keydown 事件开始工作。我希望这样做是将数据呈现给用户并自动由键盘驱动。
有人对我如何实现这一目标有任何建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web
技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有以下代码片段:
<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 时,我想设置焦点。我无法在 body 标记上放置 onLoad 函数,因为我不知道何时生成 div。
function setTableFocus(count){
var flinkText = 'focusLink'+count;
document.getElementById(flinkText).focus();
}
我没有收到任何错误,并且我知道在呈现页面时正在调用该函数(通过警报)。但是,当我使用箭头键或 Enter 按钮时,整个页面都会移动(甚至不包括显示数据的 div)。
当我单击其中一个表格元素时(使用鼠标)。之后 keydown 事件开始工作。我希望这样做是将数据呈现给用户并自动由键盘驱动。
有人对我如何实现这一目标有任何建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的
隐私政策
了解更多相关信息。 单击
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文
发布评论
评论(7)
如果添加
tabindex
属性,则可以使div
可聚焦。请参阅:http://snook.ca/archives/accessibility_and_usability/elements_focusable_with_tabindex
更新:在http://jsfiddle.net/rorkules/sXj9m/ 添加了一个简单的演示
you can make a
div
focusable if you add atabindex
attribute.see: http://snook.ca/archives/accessibility_and_usability/elements_focusable_with_tabindex
UPDATE: added a simple demo at http://jsfiddle.net/roberkules/sXj9m/
动态生成 div 的函数将具有可用于知道要关注哪个 div 的上下文,在最后一个 div 输出一个带有scrollTo() 的 script 后,将焦点集中在你想要的div。为每个 div 分配一个 ID,以便您可以从集合中选择它。
The function that's dynamically generating the divs will have the context available to know which div to focus on, after the last div output a script with a scrollTo() to focus on the div you want. Assign each div an ID, so you'll be able to choose it out of the set.
我解决了这个问题,执行下一步:
I solve that doing the next:
你能控制asp功能吗?如果是,那么这将是最容易集中注意力的地方。否则,您可以侦听 DOMNodeInserted 事件(注意:浏览器支持可能会有所不同)并根据适当的条件将焦点设置为 div (或其子级)。
Are you in control of the asp function? If yes, then that'd be the easiest place to set focus. Otherwise, you could listen to
DOMNodeInserted
event (note: browser support may vary) and set focus todiv
(or its children) based on appropriate conditions.您可以使用 getElementsByClassName
You could use getElementsByClassName
你的意思是你想在div生成时聚焦它?
尝试重新搜索这些
http://api.jquery.com/focus/
和
http://api.jquery.com/live/
和按键..
http://api.jquery.com/keypress/
afaik div 和其他元素可以像 wiki 中那样具有某种焦点,例如..
http://en.wikipedia.org/wiki/JavaScript#Cross-site_vulnerability
它会自动滚动到那里。我只是不知道怎么做。
至于动态生成的div和表格,你可以使用jquery的live()函数
do you mean you want to focus the divs whenever it is generated?
try reasearching for these
http://api.jquery.com/focus/
and
http://api.jquery.com/live/
and for the keypress..
http://api.jquery.com/keypress/
afaik divs and other elements can have focus of some sort like in wikis, like..
http://en.wikipedia.org/wiki/JavaScript#Cross-site_vulnerabilities
and it'll scroll automatically there. I am just no sure how.
as for the dynamically generated divs and tables you can use jquery's live() function
你不能聚焦一个div。您的意思是集中输入吗?
无论如何,您可以包含一个简短的脚本标签来将某些内容集中在 HTML 中 - 只需将脚本放在 div 后面 - 甚至放在 div 内部。
You can't focus a div. Do you mean focus an input?
Anyway, you can include a short script tag to focus something right in the HTML - simply put the script right after the div - or even inside the div.