我正在尝试控制我的表单以及用户如何通过表单元素“tabindex
属性与它们进行交互。我的所有元素都指定了tabindex
,我希望这个值得到尊重并正确使用。
我目前正在使用Mac / Firefox开发,我知道默认的Mac系统设置,它将制表符切换设置为仅输入元素和列表。但是,我想覆盖这个以及任何其他可能妨碍任何系统/浏览器的设置。
我正在使用jQuery试图解决这个问题。这是我的代码:
$(":input").keypress(function(e){
if (e.which == 0)
{
tindex = parseInt($(this).attr("tabindex")) + 1;
$(":input[tabindex='" + tindex + "']").focus();
}
});
但是,这不符合我的要求。启用默认的Mac设置时,这实际上会跳过tabindex,并完全跳过非text / textarea项目。例如,如果我在input[tabindex=2]
,我按“Tab”键,我就会被发送到input[tabindex=4]
。如果我在input[tabindex=2]
并且select
和input[tabindex=2]
之间有一个input[tabindex=4]
框,我会被发送到input[tabindex=5]
。
我希望input[tabindex=2]
将我发送给input[tabindex=3]
,select[tabindex=3]
,input[type=radio][tabindex=3]
等;基本上只有tabindex
的3。
让我知道任何解决这个问题的想法。如果您知道我应该查看的任何其他系统/浏览器上的任何其他内容,请告诉我。
答案 0 :(得分:4)
将e.preventDefault();
添加到您的按键事件处理程序。这将阻止浏览器对此事件执行其默认操作。如果链接放在点击处理程序中,这也会阻止浏览器跟踪链接。
请参阅documentation。