我有一个 CheckListBox 并在项目上指定工具提示。渲染时,它会在复选框(和标签)周围显示一个跨度,并且它是具有标题属性的跨度,而不是复选框(输入类型=复选框)。
有谁知道如何在输入元素上设置标题属性而不是周围的跨度?
为了符合 508,我需要在 input 元素上拥有 title 属性,而不是在 span 上。
编辑:请注意,我更愿意在服务器端在 C# 中进行所有必要的更改。我宁愿不必在 javascript/jquery 中执行此操作。
我有一个 CheckListBox 并在项目上指定工具提示。渲染时,它会在复选框(和标签)周围显示一个跨度,并且它是具有标题属性的跨度,而不是复选框(输入类型=复选框)。
有谁知道如何在输入元素上设置标题属性而不是周围的跨度?
为了符合 508,我需要在 input 元素上拥有 title 属性,而不是在 span 上。
编辑:请注意,我更愿意在服务器端在 C# 中进行所有必要的更改。我宁愿不必在 javascript/jquery 中执行此操作。
到过那里。JavaScript 无论如何都不会帮助您处理 508,因为它不会更改源代码。
这应该为您解决它:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
foreach(ListItem li in CheckBoxList1.Items){
li.Attributes["title"] = "my title";
}
}
我应该在发布之前进行测试。最快的方法是使用带有 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>