Asp.net 如何使用Jquery获取选中复选框列表项的值?

Asp.net 如何使用Jquery获取选中复选框列表项的值?,asp.net,jquery,checkbox,selectedvalue,Asp.net,Jquery,Checkbox,Selectedvalue,如果我有下面的复选框列表 <asp:CheckBoxList ID="typeCheckBoxList" runat="server" RepeatDirection="Horizontal"> <asp:ListItem Value="0">Student</asp:ListItem> <asp:ListItem Value="1">Parent</asp:ListItem> <asp:ListItem Value=

如果我有下面的复选框列表

<asp:CheckBoxList ID="typeCheckBoxList" runat="server" RepeatDirection="Horizontal">
  <asp:ListItem Value="0">Student</asp:ListItem>
  <asp:ListItem Value="1">Parent</asp:ListItem>
  <asp:ListItem Value="2">Educational</asp:ListItem>
  <asp:ListItem Value="3">Specialist </asp:ListItem>
  <asp:ListItem Value="5">Other</asp:ListItem>
</asp:CheckBoxList>

由于ASP.NET2.0没有适当地呈现这一点(其目的是获取服务器端的值),因此您可以进行一些黑客操作。在“代码隐藏”中,执行以下操作:

foreach (ListItem li in typeCheckBoxList.Items)
  li.Attributes.Add("data-value", li.Value);
$('#typeCheckBoxList input:checked').each(function() {
  alert($(this).closest('span').attr('data-value'));
  alert($(this).next('label').text());
});
然后,您的标记将如下所示(忽略较短的名称,我的测试不在另一个命名容器中,对于手头的问题一点也不重要):


:)如果有帮助的话。ASP.Net 4.0的默认呈现模式会在标记中呈现
,这是它应该呈现的。属性上的
数据内容
格式的原因是尽可能有效,它们被调用,添加到HTML5的规范中,但在4中不会引起任何问题。

由于ASP.Net 2.0没有适当地呈现此内容(其目的是在服务器端获取值),您可以进行一些黑客操作。在“代码隐藏”中,执行以下操作:

foreach (ListItem li in typeCheckBoxList.Items)
  li.Attributes.Add("data-value", li.Value);
$('#typeCheckBoxList input:checked').each(function() {
  alert($(this).closest('span').attr('data-value'));
  alert($(this).next('label').text());
});
然后,您的标记将如下所示(忽略较短的名称,我的测试不在另一个命名容器中,对于手头的问题一点也不重要):


:)如果有帮助的话。ASP.Net 4.0的默认呈现模式会在标记中呈现
,这是它应该呈现的。属性上的
数据内容
格式的原因是尽可能有效,它们被调用,添加到HTML5的规范中,但在第4节中不会引起任何问题。

您可以发布呈现的标记吗?我发布了您呈现的内容,我注意到value属性不存在。您正在运行哪个版本的ASP.Net?它确实在这里呈现,但我运行的快速测试使用的是ASP.NET4,看起来是这样的:我使用ASP.NET2.0。。我也在IE和Chrome中尝试过,得到了同样的结果。我在这里有点猜测,之所以没有呈现,是因为服务器端只关心回发中是否有检查,如果没有检查,就不会有检查。因此,要完成服务器端所需的一切,并不需要它。我添加了一种在客户端获取所需内容的方法,不幸的是,在4.0发布呈现的标记之前,呈现是不正确的。我发布了呈现的标记,并注意到值属性不存在。您正在运行哪个版本的ASP.Net?它确实在这里呈现,但我运行的快速测试使用的是ASP.NET4,看起来是这样的:我使用ASP.NET2.0。。我也在IE和Chrome中尝试过,得到了同样的结果。我在这里有点猜测,之所以没有呈现,是因为服务器端只关心回发中是否有检查,如果没有检查,就不会有检查。因此,要完成服务器端所需的一切,并不需要它。我添加了一种从客户端获取所需内容的方法,不幸的是,直到4.0版本渲染才正确
$('#typeCheckBoxList input:checked').each(function() {
  alert($(this).closest('span').attr('data-value'));
  alert($(this).next('label').text());
});