【问题标题】:ASP.NET validating multiple checkbox list in repeaterASP.NET 验证中继器中的多个复选框列表
【发布时间】:2019-11-09 10:40:48
【问题描述】:

我正在制作可以向用户提出多个问题的广告系列。每个问题的类型可以是文本框、单选按钮列表、下拉列表和复选框列表。

我有一个重复器,用于显示问题,其中每个项目都有一个具有单一或多种类型答案的问题。

我正在尝试验证用户是否回答了问题。 我正在从后面的代码中动态分配验证控件(重复项绑定) 我能够验证文本框、单选按钮列表和下拉列表,但不能验证复选框列表。

据我了解,必填字段验证器不能直接用于复选框列表。我们必须在 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>

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

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    这可以通过 CustomValidator 和一些 javscript 来完成。要使此示例正常工作,CustomValidatorCheckBoxList 必须在同一个 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>
    

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-29
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      相关资源
      最近更新 更多