如何使用jQuery获取所选ASP.NET CheckBoxList项的索引及其文本值
我使用了列出的代码,但它不适用于我。
前两行将返回带有“undefined”字符串
的消息var index = $('#<%=chkListGroups.ClientID %>').attr("selectedIndex");
alert(index);
后两行将返回空消息。
var text = $('#<%=chkListGroups.ClientID %>').val();
alert(text);
答案 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()