Jos*_*ola 6 javascript jquery onclick
我在我的网站上有一个可用性问题.我有一组标签,每个标签都包含一个表格.当您单击选项卡链接时,它会将焦点放在选项卡内容正文中的第一个文本框中.面向鼠标的人喜欢这个"功能".问题是面向键盘的用户使用键盘上的TAB键来浏览选项卡.他们在他们想要查看的选项卡上按Enter键,点击事件触发并显示选项卡,但焦点是文本框,完全调整其Tab键顺序.因此,当他们再次点击标签时,他们想要转到屏幕上的下一个标签,但由于焦点已移动到表单中,因此无法使用键盘轻松访问下一个标签.
因此,在click事件中,我需要确定他们是否用鼠标按钮实际点击了它.这可能吗?我的第一次尝试是这样的:
$("#tabs li a").click(function(e) {
var tab = $(this.href);
if(e.keyCode != 13)
$("input:first", tab).focus();
});
Run Code Online (Sandbox Code Playgroud)
但keyCode总是0. which财产也总是0.请帮忙!
这是我想出的解决方案,它非常简单。我在选项卡链接上捕获了 keydown,并在 keyCode 为 13 时触发了 click 事件。幸运的是,该trigger函数允许我们将额外的参数传递给事件处理程序...
$("#tabs li a").keydown(function(e) {
if(e.keyCode == 13) {
$(this).trigger("click", true);
e.preventDefault();
}
});
Run Code Online (Sandbox Code Playgroud)
所以我只需更改我的点击处理程序即可接收新参数并使用它......
$("#tabs li a").click(function(e, enterKeyPressed) {
if(enterKeyPressed)
alert("Enter key");
else
alert("Clicked");
});
Run Code Online (Sandbox Code Playgroud)
我也在jsFiddle 上发布了一个演示。感谢所有阅读该问题的人。
| 归档时间: |
|
| 查看次数: |
8260 次 |
| 最近记录: |