如何使用jquery获取所选Asp.net checkBoxList项的索引及其文本值

时间:2010-08-24 19:03:32

标签: javascript jquery .net asp.net checkboxlist

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

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

前两行将返回带有“undefined”字符串

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

后两行将返回空消息。

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

2 个答案:

答案 0 :(得分:2)

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);

答案 1 :(得分:0)

修改:误读原始问题 - 相应地更新此答案。

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相对较新,并且不知道它在我的头脑中。

原始回复(适用于简单的选择列表)

这应该得到选定的索引:

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

这应该得到所选的值:

$("#SomeListID").val()