Ich habe zwei Checkbox-Listen, ich möchte die Anzahl der markierten Elemente von diesen erhalten. Unten ist mein Code:

<div id="divAreaListingByLocation">
  <asp:CheckBoxList ID="chklstArea" CssClass="chkarea" RepeatColumns="6" RepeatDirection="Vertical"
        runat="server" OnSelectedIndexChanged="chklstArea_SelectedIndexChanged" AutoPostBack="true">
  </asp:CheckBoxList>
</div>
<asp:Repeater ID="repRooms" runat="server" OnItemDataBound="repRooms_ItemDataBound">
    <ItemTemplate>
        <div style="height: 100%; float: none;">
            <asp:Panel ID="pnlRoomheader" runat="server" Style="width: 98%; background-color: #86ADD6;
                color: #4A4A4A; height: 20px; margin-top: 10px; text-align: left; padding: 5px;
                font-size: 15px; font-weight: bold;">
                <asp:Label ID="lblAreaName" runat="server"></asp:Label>
                <asp:Label ID="lblAreaId" Style="display: none;" runat="server"></asp:Label>
            </asp:Panel>
            <div id="divRoomListingByLocation" style="padding-bottom: 10px; padding-top: 10px;">
                <asp:CheckBoxList ID="chkRoomList" CssClass="chkRooms" RepeatColumns="6" RepeatDirection="Vertical"
                    runat="server">
                </asp:CheckBoxList>
                <asp:Label ID="lblRoomMessage" Text="This Area does not have any room." ForeColor="Red"
                    runat="server"></asp:Label>
            </div>
        </div>
    </ItemTemplate>
</asp:Repeater>

Was ich tun möchte, ist: Wenn der Benutzer keines der Kontrollkästchen dieser beiden aktiviert hat, wird eine Warnung angezeigt, die besagt, dass auf Knopfdruck eines der Kontrollkästchen aus beiden Listen aktiviert ist.

Ich habe es mit class versucht, aber die Klasse wird an das Tabellen-Rendering in HTML der Checkbox-Liste angehängt.

1
Ram 21 Nov. 2012 im 12:16

4 Antworten

Beste Antwort

Da Sie die Kontrollkästchenliste verwenden, wird die angegebene Klasse auf die Tabelle und nicht auf das Kontrollkästchen angewendet. Dort müssen Sie verwenden

$(".chkarea").find("input:checked").length;

Dies gibt die Anzahl aller Kontrollkästchen zurück, die für eine Kontrollkästchenliste mit der Klasse "chkarea" aktiviert sind.

4
Anshuman Jasrotia 21 Nov. 2012 im 09:15

Mit jQuery:

var n = $("input:checked").length;

Angenommen, die asp-Seite gibt eine Reihe von <input> Elementen zurück.

Ein Beispiel finden Sie in dieser Geige.

4
Cerbrus 21 Nov. 2012 im 08:38
    <script type="text/javascript">
function fnc()
{
    x=document.getElementById("chkdiv").elements;

    for(i=0;i<x.length;++i)
    {if(x[i].type=='checkbox' && x[i].checked)
    alert("checked");

    }
}
</script>
    <form id="chkdiv">
<input type="checkbox" id="chk1">
<input type="checkbox" id="chk2">
<button id="button" onClick="fnc()">click</button>
</form>
1
polin 21 Nov. 2012 im 08:33

Sie können einen Platzhalter für die Checkbox-Listen-ID verwenden, da die von der Checkbox-Liste generierten IDs mit dieser ID beginnen.

count = $("[id^=chklstArea] , [id^=chkRoomList]").filter(function(){
            if($(this).is(':checked')) 
                  return $(this);
         }).length;
1
Adil 21 Nov. 2012 im 08:45