亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何驗證轉發器中的所有復選框都已選中

如何驗證轉發器中的所有復選框都已選中

C#
慕碼人8056858 2021-09-19 15:52:01
我有一個表單,它從數據庫中提取所需的協議文本,并將每個活動的協議條款顯示為轉發器中的單獨復選框。在提交表單之前,我需要驗證轉發器中的所有復選框都已選中。有沒有辦法做到這一點,或者我應該以與下面開始的方式不同的方式來完成它?目前,我有一個 CustomValidator,但它只需要至少選中一個復選框。<h1>Agreements</h1>        <asp:Repeater ID="rptAgreements" runat="server">            <HeaderTemplate>                <table>            </HeaderTemplate>            <ItemTemplate>                <tr>                    <td valign="top" style="padding:10px;">                        <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="*" ClientValidationFunction = "ValidateCheckBox"></asp:CustomValidator>                        <asp:CheckBox ID="Agreements" value='<%# Eval("AgreementID") %>' runat="server" ClientIDMode="Static" />                    </td>                    <td style="padding:10px;">                        <asp:Label ID="lblAgreementText" runat="server" Text='<%# Eval("AgreementText") %>' />                    </td>                </tr>            </ItemTemplate>            <FooterTemplate>                </table>            </FooterTemplate>        </asp:Repeater><script type = "text/javascript">    function ValidateCheckBox(sender, args) {        if (document.getElementById("Agreements").checked == true) {            args.IsValid = true;        } else {            args.IsValid = false;        }    }</script> 背后的代碼:try    {        using (SqlConnection con = new SqlConnection(FormConnstring))        {            using (SqlCommand cmd = new SqlCommand("sp_SelectAgreements", con))            {                using (SqlDataAdapter agreeDS = new SqlDataAdapter(cmd))                {                    cmd.CommandType = CommandType.StoredProcedure;                    DataTable dt = new DataTable();                    agreeDS.Fill(dt);                    rptAgreements.DataSource = dt;                    rptAgreements.DataBind();                }            }        }    }
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您可以使用一個類并根據您的目的使用單個 customValidator。因此,您的代碼將如下所示。


<h1>Agreements</h1>

    <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="*" ClientValidationFunction = "ValidateCheckBoxes"></asp:CustomValidator>

    <asp:Repeater ID="rptAgreements" runat="server">

        <HeaderTemplate>

            <table>

        </HeaderTemplate>

        <ItemTemplate>

            <tr>

                <td valign="top" style="padding:10px;">                        

                    <asp:CheckBox ID="Agreements" value='<%# Eval("AgreementID") %>' runat="server" ClientIDMode="Static" CssClass="Agreement"/>

                </td>

                <td style="padding:10px;">

                    <asp:Label ID="lblAgreementText" runat="server" Text='<%# Eval("AgreementText") %>' />

                </td>

            </tr>

        </ItemTemplate>

        <FooterTemplate>

            </table>

        </FooterTemplate>

    </asp:Repeater>


<script type = "text/javascript">

function ValidateCheckBoxes(sender, args) {

    if ($('input.Agreement').not(':checked').length == 0) {

        args.IsValid = true;

    } else {

        args.IsValid = false;

    }

}


查看完整回答
反對 回復 2021-09-19
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

您在代碼中分配 ClientIDMode="Static" 將在 Html 中生成重復的 Id,并且它不是有效的 html。


您可以為復選框分配類,并在 JS 中計算協議復選框和選定的復選框,然后您可以比較數字。如波紋管:


<input type="checkbox" class="agreement" value="1"> agreement 1

<input type="checkbox" class="agreement" value="2"> agreement 2

<input type="checkbox" class="agreement" value="3"> agreement 3

<input type="checkbox" class="agreement" value="4"> agreement 4

<input type="submit" value="GO" id="btn" />


$('#btn').click(function(){

  var chkAll=$('input.agreement').length;

  var chkSelected = $('input.agreement:checked').length;

  alert(chkAll==chkSelected);

});


查看完整回答
反對 回復 2021-09-19
  • 2 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號