使用jQuery来规避tabindex问题

时间:2009-07-18 16:51:52

标签: javascript jquery forms tabindex

我正在尝试控制我的表单以及用户如何通过表单元素“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]并且selectinput[tabindex=2]之间有一个input[tabindex=4]框,我会被发送到input[tabindex=5]

我希望input[tabindex=2]将我发送给input[tabindex=3]select[tabindex=3]input[type=radio][tabindex=3]等;基本上只有tabindex的3。

让我知道任何解决这个问题的想法。如果您知道我应该查看的任何其他系统/浏览器上的任何其他内容,请告诉我。

1 个答案:

答案 0 :(得分:4)

e.preventDefault();添加到您的按键事件处理程序。这将阻止浏览器对此事件执行其默认操作。如果链接放在点击处理程序中,这也会阻止浏览器跟踪链接。

请参阅documentation