请注意,该场景是ASP.NET Webforms + Master - 内容页面,它会弄乱ID 比方说,我有三个复选框
<asp:CheckBox ID="chkConsultantQuality" runat="server"
CssClass="company"/>
<asp:CheckBox ID="chkConsultantEnvironment" runat="server"
CssClass="company"/>
<asp:CheckBox ID="chkConsultantSafety" runat="server"
CssClass="company"/>
我想根据以下条件对每个复选框的点击事件进行div id="CompanyPanel"
我打算使用jQuery,因为我按类名选择。我可以在class ='company'上使用jQuery.each
来检查每个检查标志
有更好的想法吗?
答案 0 :(得分:7)
您可以使用:checked
(http://api.jquery.com/checked-selector/)选择器:
<script>
$(document).ready(function() {
$(".company input").click(function() {
var cnt = $(".company input:checked").length;
if( cnt == 0)
{
// none checked
$('#CompanyPanel').hide();
}
else
{
// any checked
$('#CompanyPanel').show();
}
});
});
</script>
您可能希望在这些复选框的容器上添加(或使用)ID,以优化选择器的速度。
至于asp.net搞乱控件上的客户端ID,你可以使用
$('<% =MyControl.ClientID %>')
答案 1 :(得分:5)
您可以在所有复选框上等待click
事件,然后在那里执行验证。无需.each()
。这样,只要选中或取消选中任何复选框,就会验证。
$('input.company:checkbox').click(function(){
if ($('input.company:checkbox:checked').length > 0)
{
$('div#CompanyPanel').show();
}
else
{
$('div#CompanyPanel').hide();
}
});
您也可以稍微优化它,并根据您的需要进行更改。
答案 2 :(得分:1)
使用CheckBoxList和Dado.Validators可以非常轻松地完成此操作,它为CheckBoxLists提供支持。请注意,这提供了客户端和服务器端验证。
<asp:CheckBoxList ID="cblCheckBoxList" runat="server">
<asp:ListItem Text="Check Box (empty)" Value="" />
<asp:ListItem Text="Check Box 1" Value="1" />
<asp:ListItem Text="Check Box 2" Value="2" />
<asp:ListItem Text="Check Box 3" Value="3" />
</asp:CheckBoxList>
<Dado:RequiredFieldValidator runat="server" ControlToValidate="cblCheckBoxList" ValidationGroup="vlgSubmit" />
示例codebehind.aspx.cs
btnSubmit.Click += (a, b) =>
{
Page.Validate("vlgSubmit");
if (Page.IsValid) {
// Validation Successful
}
};
Dado.Validators还有许多其他有用的功能值得一看。