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

发布于 2024-09-16 04:15:19 字数 345 浏览 5 评论 0原文

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

我使用了列出的代码,但它对我不起作用。

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

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

后两行将返回空消息。

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

How to get the index of selected ASP.NET CheckBoxList items and the text value of it using jQuery

I used the code listed but it did not work with me.

First two lines will return message with "undefined" string

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

second two lines will return empty message.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

做个ˇ局外人 2024-09-23 04:15:19
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);
var indices = '';
$('#<%=chkListGroups.ClientID %> input:checkbox').each(function (index) { 
   if ($(this).filter('input:checkbox:checked').length == 1) { 
       indices += (index + ' '); 
   }
});
alert(indices);

should print the indices.

If by "text value" you mean what would be returned from the Value property of the ListItem element within ASP.NET, it is not directly included in the web page automatically. One way to address this issue would be to create a javascript array of the Value properties within the .NET code for the page, then use something similar to the above to look up the value in the array. If the array is called "valueArray", then you would could replace the code in the body of the "if" above with

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

I hope this helps -- I certainly welcome any questions.

EDIT (following comment by submitter):

If you want the visible label of each checked item, this should work:

var text = $('#<%=chkListGroups.ClientID %> input:checkbox:checked').siblings('label').text();
alert(text);
蘸点软妹酱 2024-09-23 04:15:19

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

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

Edit: mis-read your original question - updating this answer accordingly.

ASP.NET renders the checkBoxList control to be a series of checkboxes (you can use firebug to easily see the rendered controls). I believe it assigns the ID of each checkbox, based on the ID you specified. For example:

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

Is rendered in HTML as:

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

You can determine if a box is checked via:

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

You can also find them all via:

$('#list1 input')

... then use jQuery iteration to scan through all checkboxes. I suspect jQuery can also be used to find the next "label" control after a target checkbox control, and extract the actual text from it. One of stackoverflow's bigger jQuery brains will have to help with with the exact selector syntax - I'm relatively new to jQuery, and don't know it off the top of my head.

Original response (applies to simple selectionLists):

This should get the selected index:

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

This should get the selected value:

$("#SomeListID").val()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文