【发布时间】:2016-02-06 21:46:18
【问题描述】:
在我的 Web 应用程序中,有几个表单使用 asp:ValidationSummary 和 asp: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" />
我尝试了什么:
我已经尝试通过调用focus() 有意将焦点设置在错误上,但这也没有用。
【问题讨论】:
-
使用 JS 将焦点设置为验证摘要应该可以解决问题,JAWS 会在获得焦点后读取。老实说,我总是在对话框中显示错误消息,以确保 JAWS 能够阅读。
-
您是否尝试过更新您的 JS 函数以将焦点设置为“ValidationSummary2”以防页面无效?
-
如果我什至使用那个
document.getElementById('<%=ValidationSummary2.ClientID %>').focus();,在按下提交后它会关注第一个缺失的字段而不是验证摘要。 -
您可以将其包装在一个 div 中并改为聚焦 div。我刚刚注意到您已经有一个 div,只需向该 div 添加一个 ID 并尝试将焦点设置为它。
标签: javascript asp.net validation accessibility jaws-screen-reader