屏幕阅读器和 JavaScript 焦点事件的辅助功能?

Accessibility with screen-readers and JavaScript focus events?

我有一个表单,其中有一些 JavaScript 可以在输入有效文本时前进到下一个字段(下面的示例)。我的问题是屏幕是如何处理的-reader。这会混淆 reader 还是会检测焦点的变化并向用户读出新字段?

HTML

<form action="/some/action" method="post" role="form">
    <legend>A Form</legend>
    <label for="first_number">First Number</label>
    <input id="first_number" name="first_number" required type="text" value="">
    <label for="second_number">Second Number</label>
    <input id="second_number" name="second_number" required type="text" value="">
    <button type="submit">Submit</button>
</form>

JavaScript

(function (document, window) {
    function getFocusCallback(current_focus, go) {
        var check = document.getElementById(current_focus);
        var el = document.getElementById(go);
        var pat = new RegExp('^\d{3}$');
        return function callback() {
            if (pat.test(check.value)) {
                el.focus();
            }
        };
    }

    document.getElementById('first_number').addEventListener('input', getFocusCallback('first_number', 'second_number'));
})(document, window);

因此,当用户在第一个字段中输入三位数字后,将在第二个字段中调用 focus 方法。

我认为这里的问题是意外行为。对于视力不佳的用户,任何不标准的行为都可能造成混淆,因为它的工作方式与其他所有网站都不同。

此外,这是您在每个领域都拥有的功能,还是其中的一部分?如果您有多个具有不同行为的字段,那将尤其令人困惑。

几年前有一个关于这个的很好的话题,有几个比我更博学的人提供了意见。 https://lists.w3.org/Archives/Public/w3c-wai-ig/2015AprJun/0162.html

您需要单击每页底部的“下一条消息”link 才能阅读线程中的所有消息。