遇到一个问题,如题,在页面的左上角,有两个超链接标签a,b,功能是这样的,按tab键,当超链接a获取到焦点之后,按下回车键,导航栏的第一个可以获取到焦点的元素得到焦点,当超链接b获取到焦点之后,按下回车键,内容部分的第一个可以获取到焦点的元素得到焦点。导航栏在一个div里面,id="navigation",内容部分在一个div里面,id="content".
为了实现这个功能,最开始想到的是查抄div内的<a href></a>这种标签元素,让找到的第一个a标签元素获取到焦点,如果没有a标签元素,则再查找input元素,让找到的第一个input元素获取到焦点,把这个方法写到模板页里面。这个方法对于导航栏是没有啥问题的,因为导航栏中差不多都是a标签,但是子页面就有问题了,子页面content部分,第一个可以获取到焦点的元素各种各样,不确定。比如一个页面中,第一个a标签在页面的中间出现,前面是一堆Input元素,时候,按下回车键,页面中间的那个a标签就获取到了焦点,这是不对的。后来想到了遍历div内部的所有元素,然后,找到可以获取到焦点的第一个元素,让这个元素得到焦点。这里有个问题,可以获取到焦点的元素有什么特点?不知道,网上搜了一下,大概有Input ,checkbox,button, a标签等几种,如果某个元素上面有tabindex=0这种属性,也可以获取到焦点。
后来翻看jquery的选择器大全:http://www.cnblogs.com/hulang/archive/2011/01/12/1933771.html
有这么一个东西
$(":enabled") 选择所有的可操作的表单元素
试了下,问题解决,IE9, Chrome,firefox都是好使的。问题解决。
window.msf.focusContent = function () {
if ($("#content :enabled")[0] != null) {
$("#content :enabled")[0].focus();
}
}
window.msf.focusNavigation = function () {
if ($("#navigation :enabled")[0] != null) {
$("#navigation :enabled")[0].focus();
}
}
用data-bind进行绑定click事件,然后a标签的href="javascript:void(0)".
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。