【问题标题】:How to get the index of selected Asp.net checkBoxList items and the text value of it using jquery如何使用 jquery 获取所选 Asp.net checkBoxList 项目的索引及其文本值
【发布时间】:2010-08-24 19:03:32
【问题描述】:

如何使用 jQuery 获取选定的 ASP.NET CheckBoxList 项的索引及其文本值

我使用了列出的代码,但它不适用于我。

前两行将返回带有“未定义”字符串的消息

var index = $('#<%=chkListGroups.ClientID %>').attr("selectedIndex");
alert(index);

后两行将返回空消息。

var text = $('#<%=chkListGroups.ClientID %>').val();
alert(text);

【问题讨论】:

    标签: javascript jquery .net asp.net checkboxlist


    【解决方案1】:
    var indices = '';
    $('#<%=chkListGroups.ClientID %> input:checkbox').each(function (index) { 
       if ($(this).filter('input:checkbox:checked').length == 1) { 
           indices += (index + ' '); 
       }
    });
    alert(indices);
    

    应该打印索引。

    如果“文本值”是指从 ASP.NET 中 ListItem 元素的 Value 属性返回的内容,则它不会自动直接包含在网页中。解决此问题的一种方法是在页面的 .NET 代码中创建一个包含 Value 属性的 javascript 数组,然后使用与上述类似的方法来查找数组中的值。如果数组被称为“valueArray”,那么您可以将上面“if”正文中的代码替换为

    indices += (valueArray[index] + ' ');
    

    我希望这会有所帮助——我当然欢迎任何问题。

    编辑(提交者发表评论后):

    如果您想要每个选中项目的可见标签,这应该可以:

    var text = $('#<%=chkListGroups.ClientID %> input:checkbox:checked').siblings('label').text();
    alert(text);
    

    【讨论】:

    • 感谢您的帮助,此代码运行正常。我所说的文本值是复选框的文本,例如:如果我有这个控件: OneTwo Three 如何使用 jquery 获取第二个项目的文本,即 (Two) 并具有索引 1?
    【解决方案2】:

    编辑:误读您的原始问题 - 相应地更新此答案。

    ASP.NET 将 checkBoxList 控件呈现为一系列复选框(您可以使用 firebug 轻松查看呈现的控件)。我相信它会根据您指定的 ID 分配每个复选框的 ID。例如:

    <asp:CheckBoxList id="list1" runat="server">
        <asp:ListItem>One</asp:ListItem>
        <asp:ListItem>Two</asp:ListItem>
        <asp:ListItem>Three</asp:ListItem>
    </asp:CheckBoxList>
    

    在 HTML 中呈现为:

    <table id="list1">
        <tr><td><input id="list1_0" type="checkbox" /><label for="list1_0">One</label></td></tr>
        <tr><td><input id="list1_1" type="checkbox" /><label for="list1_1">Two</label></td></tr>
        <tr><td><input id="list1_2" type="checkbox" /><label for="list1_2">Three</label></td></tr>
    </table>
    

    您可以通过以下方式确定是否选中了一个框:

    $('#list1_0').attr('checked')
    

    您也可以通过以下方式找到它们:

    $('#list1 input')
    

    ... 然后使用 jQuery 迭代扫描所有复选框。我怀疑 jQuery 也可用于在目标复选框控件之后查找下一个“标签”控件,并从中提取实际文本。 stackoverflow 更大的 jQuery 大脑之一将不得不帮助使用确切的选择器语法 - 我对 jQuery 比较陌生,并且不知道它是不是我的头脑。

    原始响应(适用于简单的 selectionLists)

    这应该得到选定的索引:

    $("#SomeListID").attr("selectedIndex")
    

    这应该得到选定的值:

    $("#SomeListID").val()
    

    【讨论】:

    • 这些行对我不起作用,请在使用您的代码时检查我的更新。
    猜你喜欢
    • 2013-05-26
    • 2012-02-07
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多