使用jquery在转发器控件中找到嵌套的checkboxlist

时间:2011-03-11 16:40:28

标签: jquery visual-studio-2008 nested element

使用VS 2008,我有一个带嵌套元素的Repeater控件,想要用jquery选择其中一个(复选框)。

<asp:Repeater runat="server" ID="storesRep" DataSourceID="storeSqlDataSource" OnItemDataBound="StoresRep_ItemDataBound">
        <ItemTemplate>
            <table style="padding:0px">
            <tr>
                <td style="width:200px"><asp:Label ID="infoLbl" runat="server">Choose stores for upload:</asp:Label>&nbsp;&nbsp;&nbsp;&nbsp;</td>
                <td style="width:110px"><asp:Label ID="storeLbl" runat="server" Text='<%# Bind("Name") %>'></asp:Label>&nbsp;&nbsp;</td>
                <td><asp:CheckBox runat="server" ID="storeCheck" CssClass="storeCheck" /></td>
            </tr>
            </table>
        </ItemTemplate>
        <FooterTemplate>
            <table runat="server" id="footerTbl" visible="false" style="padding:0px">
                <tr>
                    <td style="width:200px"><asp:Label ID="infoLbl" runat="server">Choose stores for upload:</asp:Label>&nbsp;&nbsp;&nbsp;&nbsp;</td>
                    <td><asp:Label ID="lblEmptyData" Text="No Stores found." runat="server" ForeColor="GrayText"></asp:Label></td>
                </tr>
            </table>        
         </FooterTemplate>
    </asp:Repeater>

这是我的剧本

$('#<%= uploadBtn.ClientID %>').click(
    function() {

        //check if store was chosen from list
        var storeChecked = false;
        $('#<%= storeCheck.ClientID %>').each(function() {

            if ($(this).attr('checked'))
                storeChecked = true;
        });
        if (storeChecked == false) {
            alert("Upload is only possible if a store has been chosen from list.");
            return false;
        }

我收到编译器错误“storeCheck在当前上下文中不是已知名称”。

1 个答案:

答案 0 :(得分:1)

它无效,因为您尝试使用它的ID访问storeCheck,而storeCheck仅存在于转发器的上下文中。

你应该做的是改用班级。所以改变:

$('#<%= storeCheck.ClientID %>').each(function() {

$('.storeCheckBox').each(function() {

您还可以将代码更改为仅检查是否存在任何带有storeCheck类的已选中复选框:

$('#<%= uploadBtn.ClientID %>').click(function() {
    if($('span.storeCheck input:checked').length == 0) {
        alert("Upload is only possible if a store has been chosen from list.");
        return false;
    }
});

更改了代码,因为看起来asp.net将复选框放在您提供的类的跨度内,而不是直接将其应用于复选框。

jsfiddle - http://jsfiddle.net/infernalbadger/rAVLA/1/