3

我正在尝试控制我的表单以及用户如何通过表单元素的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,并完全跳过非文本/文本区域项目。例如,如果我在开机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], 等等; 基本上任何有tabindex3。

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

4

1 回答 1

4

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

请参阅文档

于 2009-07-18T17:20:38.143 回答