防止选项卡循环浏览地址栏

2024-02-08

我意识到这可能是一个可访问性问题,最好不要管它,但我想弄清楚是否可以阻止选项卡在选项卡循环中访问地址栏。

我的应用程序有另一种循环输入区域的方法,但许多新用户本能地尝试使用该选项卡,但它无法按预期工作。


这是一个通用的 jquery 实现,您不必找到最大选项卡索引。请注意,如果您在 DOM 中添加或删除元素,此代码也将起作用。

$('body').on('keydown', function (e) {
    var jqTarget = $(e.target);
    if (e.keyCode == 9) {

        var jqVisibleInputs = $(':input:visible');
        var jqFirst = jqVisibleInputs.first();
        var jqLast = jqVisibleInputs.last();

        if (!e.shiftKey && jqTarget.is(jqLast)) {
            e.preventDefault();
            jqFirst.focus();
        } else if (e.shiftKey && jqTarget.is(jqFirst)) {
            e.preventDefault();
            jqLast.focus();
        }
    }
});

但是,您应该注意,上面的代码仅适用于可见输入。有些元素即使没有输入,也可能成为文档的 activeElement,因此如果是您的情况,您应该考虑将它们添加到$(':input:visible')选择器。

我没有添加代码来滚动到焦点元素,因为这可能不是每个人都想要的行为...如果您需要它,只需在调用后添加它即可focus()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止选项卡循环浏览地址栏 的相关文章