【问题标题】:Asp validation summary not accessible for visually impaired people视障人士无法访问 Asp 验证摘要
【发布时间】:2016-02-06 21:46:18
【问题描述】:

在我的 Web 应用程序中,有几个表单使用 asp:ValidationSummaryasp:Label 进行表单的客户端和服务器端验证。但是,当我在页面上使用屏幕阅读器 (JAWS 16) 进行可访问性测试时,它只会跳过错误,视障人士不会听到任何错误回读,如果您只是使用键盘导航页面,也不会检测到它。

因此,如果有人可以告诉我在出现错误时按下提交按钮后立即关注验证摘要的方法。那太好了,我也可以使用 JavaScript 解决方案,但我不能用任何其他类型的验证来替换验证摘要,因为表单的数量超过 50 个。

我的错误标签:

      <div>
        <asp:ValidationSummary ID="ValidationSummary2" tabindex="-1" runat="server" ShowMessageBox="false"
           ShowSummary="true" ForeColor="" DisplayMode="List" CssClass="label label-danger"
          ValidationGroup="Registration" />

<asp:Label ID="LblError" runat="server" tabindex="-1" CssClass="label label-danger"></asp:Label>
      </div>

JavaScript:

    function ValidateServerButtonClick() {
        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate("Registration");
            if (Page_IsValid) {
                return true;
            }
            else {
                return false;
            }
        }
    }

提交按钮

    <asp:Button ID="btnContinue" CssClass="cui-btn disabled cui-btn-med cui-full-width" 
  runat="server" CausesValidation="true" OnClick="btncontinue_Click"
  OnClientClick="ClearLabel()" Text="Sign up" Enabled="false" ValidationGroup="Registration" />

呈现的 HTML:

我尝试了什么:

我已经尝试通过调用focus() 有意将焦点设置在错误上,但这也没有用。

【问题讨论】:

  • 使用 JS 将焦点设置为验证摘要应该可以解决问题,JAWS 会在获得焦点后读取。老实说,我总是在对话框中显示错误消息,以确保 JAWS 能够阅读。
  • 您是否尝试过更新您的 JS 函数以将焦点设置为“ValidationSummary2”以防页面无效?
  • 如果我什至使用那个 document.getElementById('&lt;%=ValidationSummary2.ClientID %&gt;').focus(); ,在按下提交后它会关注第一个缺失的字段而不是验证摘要。
  • 您可以将其包装在一个 div 中并改为聚焦 div。我刚刚注意到您已经有一个 div,只需向该 div 添加一个 ID 并尝试将焦点设置为它。

标签: javascript asp.net validation accessibility jaws-screen-reader


【解决方案1】:

将焦点设置到您的容器 DIV 应该可以做到这一点。 JAWS 应在内容集中后开始阅读内容。

function ValidateServerButtonClick() {
            if (typeof (Page_ClientValidate) == 'function') {
                Page_ClientValidate("Registration");
                if (Page_IsValid) {
                    return true;

                }
                else {
                    setTimeout(function () {
            $('#divid').focus();
        }, 700);
                    return false;

                }
            }
        }

【讨论】:

  • 谢谢,我也试过了,但它只是没有关注验证摘要,尽管如果我点击生成的错误,它就会开始读取它(或者它会获得焦点)。
  • 您是否尝试过将焦点设置在容器 div 上?
  • 当然,如果你点击它,JAWS 就会开始阅读。但是盲人不能点击他们必须进入它。
  • 很抱歉没有添加我在上面的问题中已经做过的事情,我已经更新了这个问题。将重点放在容器 div 上也不起作用。它只关注第一个空字段。
  • 没关系。所以你确实尝试将焦点设置到 div 上?这也不起作用:/如果不能,您可以发布您呈现的 HTML 吗?嗯,是否可以将验证摘要更改为显示消息框?
猜你喜欢
  • 1970-01-01
  • 2013-08-28
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 2012-02-19
相关资源
最近更新 更多