ASP.NET正在验证中继器中的多个复选框列表

ASP.NET正在验证中继器中的多个复选框列表,asp.net,Asp.net,我正在做一些活动,这些活动可以向用户提出多个问题。每个问题可以是文本框、单选按钮列表、下拉列表和复选框列表 我有一个显示问题的复读器,其中每个项目都有一个问题,并有一个或多个类型的答案 我试图验证用户是否回答了一个问题。 我正在从代码隐藏动态分配验证控件(中继器项目绑定) 我能够验证文本框、单选按钮列表和下拉列表,但不能验证复选框列表的表格 据我所知,所需的字段验证器不能直接用于复选框列表。我们必须用JavaScript编写一个自定义验证器函数 我搜索的示例主要包含每个重复项的单个复选框 而在我

我正在做一些活动,这些活动可以向用户提出多个问题。每个问题可以是文本框、单选按钮列表、下拉列表和复选框列表

我有一个显示问题的复读器,其中每个项目都有一个问题,并有一个或多个类型的答案

我试图验证用户是否回答了一个问题。 我正在从代码隐藏动态分配验证控件(中继器项目绑定) 我能够验证文本框、单选按钮列表和下拉列表,但不能验证复选框列表的表格

据我所知,所需的字段验证器不能直接用于复选框列表。我们必须用JavaScript编写一个自定义验证器函数

我搜索的示例主要包含每个重复项的单个复选框

而在我的例子中,可能有多个带有复选框列表的问题(多个复选框)

验证此类复选框列表的最佳方法是什么

以下是我的转发器内容模板内容:

<div class="row validation-container">
    <div class="col-md-12 col-lg-12">
       <asp:TextBox ID="txtAnswer" CssClass="form-control" runat="server" TextMode="MultiLine" Rows="2" ValidationGroup="Campaign"></asp:TextBox>

       <asp:RadioButtonList ID="rdAnswer" runat="server"></asp:RadioButtonList>

       <asp:DropDownList ID="ddnAnswer" runat="server"></asp:DropDownList>

       <asp:CheckBoxList ID="chkAnswer" CssClass="chkAnswer" runat="server"></asp:CheckBoxList>

       <asp:Label ID="lbAnswerRequired" runat="server" Visible="false" style="color:#f00"/>

       <asp:RequiredFieldValidator ID="reqValidator" runat="server" Display="Dynamic" style="color: #f00" />

       <asp:CustomValidator ID="customValidator" runat="server" />
       <hr />
       </div>
   </div>
</ItemTemplate>



我希望能够澄清我的问题。

这可以通过CustomValidator和一些脚本来完成。对于本例,要使用
CustomValidator
复选框列表
必须位于相同的
div

<script>
    function checkRadioOrCheckboxList(id) {
        var isValid = false;
        $('#' + id + ' input').each(function () {
            if ($(this).prop("checked")) {
                isValid = true;
            }
        });
        return isValid;
    }

    function chkAnswer(sender, element) {
        var id = $('#' + sender.id).closest('div').find('.chkAnswer').prop('id');
        element.IsValid = checkRadioOrCheckboxList(id);
    }
</script>

功能检查RadiorCheckBox列表(id){
var isValid=false;
$('#'+id+'input')。每个(函数(){
如果($(this).prop(“选中”)){
isValid=true;
}
});
返回有效;
}
函数chkAnswer(发送器,元素){
var id=$('#'+sender.id).最近('div').find('.chkAnswer').prop('id');
element.IsValid=CheckRadiorCheckBox列表(id);
}
ASPX示例

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>

        <div>
            <asp:CheckBoxList ID="chkAnswer" CssClass="chkAnswer" runat="server">
                <asp:ListItem>Item 1</asp:ListItem>
                <asp:ListItem>Item 2</asp:ListItem>
                <asp:ListItem>Item 3</asp:ListItem>
            </asp:CheckBoxList>
            <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Select a CheckBox" ClientValidationFunction="chkAnswer"></asp:CustomValidator>
        </div>
        <hr />

    </ItemTemplate>
</asp:Repeater>

项目1
项目2
项目3