2

考虑到我无法在其他任何地方找到需要此功能的其他人的单个实例,这可能是一个不可行的要求。那说:

我正在开发的一个网站使用几十个不同的验证器控件(从RequiredFieldValidaotrs 到CustomValidators 的所有控件)来进行表单验证。作为我们第 508 节合规性的一部分,我们必须支持禁用 CSS 的用户,这是有问题的,因为验证器将错误文本呈现到页面并使用 CSS 显示属性来隐藏它。当 CSS 被禁用时,所有错误消息都可以被屏幕阅读器看到和阅读。

缺少使用标签和回发来显示和隐藏所述标签,是否有任何已知的方法可以使用禁用 CSS 的 ASP.Net 验证器控件?

4

1 回答 1

0

使用Display="None"FieldValidator 控件上的属性和ValidationSummary标签来包含消息。

<form id="form1" runat="server">
        <asp:TextBox runat="server" ID="TextBox1"  /> <br />
        <asp:TextBox runat="server" ID="TextBox2"  /> <br />
        <asp:Button runat="server" Text="Go"  />

        <div class="messages">
            <asp:ValidationSummary id="summery1"  runat="server"/>
        </div>

        <div>
        <asp:Panel ID="Panel1" runat="server" >
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1"  runat="server" 
                    ErrorMessage="Required Field Validator1 empty" ControlToValidate="TextBox1" Display="None" />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2"  runat="server" 
                    ErrorMessage="Required Field Validator2 empty" ControlToValidate="TextBox2" Display="None" />
        </asp:Panel>
        </div>
    </form>

但是......(总是有一个问题)......使用这种方法,验证消息本身仅存储在 JavaScript 中。这意味着如果禁用 Javascript,它将无法工作。我假设这不是一个大问题,因为您正在使用 WebForms(依赖于 JS),但我认为这值得一提。

并且为了记录,可访问性问题主要是胡扯。我以为我知道可访问性,直到我真正与视障程序员(100% 失明)一起工作。然后,我了解到 JS 工作得很好(假设他们知道要寻找新内容......)并且他们只是从一个链接到另一个链接跳过页面,直到他们找到他们想要的。并且基于表格的布局并没有减慢 1 秒钟的速度。在对 CSS 进行了几年令人难以忍受的宣讲之后,这真是一颗难以下咽的药丸……

于 2013-03-05T18:38:38.513 回答