【问题标题】:ASP.NET CheckListBox 508 ComplianceASP.NET CheckListBox 508 合规性
【发布时间】:2012-07-19 04:22:55
【问题描述】:

我有一个 CheckListBox 并在项目上指定 ToolTip。渲染时,它会在复选框(和标签)周围显示一个跨度,并且它是具有标题属性的跨度,而不是复选框(输入类型=复选框)。

有谁知道如何在输入元素上设置标题属性而不是周围的跨度?

为了符合 508,我需要在 input 元素上拥有 title 属性,而不是在 span 上。

编辑:请注意,我希望在服务器端使用 C# 进行所有必要的更改。我宁愿不必在 javascript/jquery 中执行此操作。

【问题讨论】:

    标签: asp.net checkbox section508


    【解决方案1】:

    我应该在发布之前进行测试。最快的方法是使用带有 runat="server" 属性的老式 html 控件。然后,您可以通过其 ID 引用您的各个复选框。例如:

    <asp:Panel ID="BrowserCheckBoxList" runat="server">
        <ul>
            <li><input id="CheckBoxList1_0" type="checkbox" name="" value="Chrome" title="Chrome" runat="server" /> <label for="CheckBoxList1_0">Chrome</label></li>
            <li><input id="CheckBoxList1_1" type="checkbox" name="" value="FireFox" title="FireFox" runat="server" /> <label for="CheckBoxList1_1">FireFox</label></li>
            <li><input id="CheckBoxList1_2" type="checkbox" name="" value="IE" title="IE" runat="server" /> <label for="CheckBoxList1_2">IE</label></li>
            <li><input id="CheckBoxList1_3" type="checkbox" name="" value="Opera" title="Opera" runat="server" /><label for="CheckBoxList1_3">Opera</label></li>
            <li><input id="CheckBoxList1_4" type="checkbox" name="" value="Safari" title="Safari" runat="server" /><label for="CheckBoxList1_4">Safari</label></li>
        </ul>
    </asp:Panel>
    

    【讨论】:

    • 居然联系了微软。基于他们实现它的时髦方式,没有办法访问 CheckBoxList 中各个复选框的输入元素。他们建议在复选框上使用带有 TemplateField 的 CheckBox 的 GridView 或带有 CheckBox 和 InputAttributes 的 Repeater 来设置标题属性。
    • 这取决于您正在构建的内容,但 GridView 可能会比 Repeater 控件增加更多的视图状态开销。假设您将数据提交到代码隐藏而不是 Web 服务或其他东西,您必须在代码隐藏中做更多的工作才能从提交控件中获取值。
    【解决方案2】:

    去过那里。 JavaScript 无论如何都无法帮助您处理 508,因为它不会更改源代码。

    这应该会为您解决问题:

    protected override void OnPreRender(EventArgs e)
    {
        base.OnPreRender(e);
        foreach(ListItem li in CheckBoxList1.Items){
                li.Attributes["title"] = "my title";
            }
    }
    

    【讨论】:

    • 是的,已经尝试过了,但是标题属性只是设置在跨度上而不是输入上。还有其他想法吗?
    • Ed,请在下面查看我的下一个解决方案。这将在您的标记中工作,尽管有点乏味。
    • 另一种解决方案,特别是如果您想要一个可重用的 508 兼容控件,是编写您自己的自定义控件。我之前没有提供代码,但我在这里找到了一个示例,可以让您有一个良好的开端 - jijeesh.8m.com/Articles/CustomCheckBoxList.html
    • 另一个带有自定义 CheckBoxList 控件的好链接 - surinder.computing-studio.com/post/2011/08/10/…
    • 请不要依赖title属性。作为评估网站合规性的人,使用标题通常会自动使相关项目失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    相关资源
    最近更新 更多