我在网上搜索并没有找到一个在.net中选择radiobuttonlist控件的好方法 所以我在每个radiobuttonlist中添加一个类,并使用类选择器循环每个,但是,似乎只要一个更改,所有更改。请参阅我的代码如下: 这是jQuery的一部分:
function Checkform() {
result=true;
$('.rbl').each(function() {
var cc = $(this + "[checked]").val();
if (cc == undefined) {
result = false;
return false;
}
});
return result;
}
这是网络部分:
<form id="form1" runat="server" onsubmit="return Checkform();">
<asp:RadioButtonList ID="RadioButtonList1" class="rbl" runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:RadioButtonList>
<asp:RadioButtonList ID="RadioButtonList2" class="rbl" runat="server"
RepeatDirection="Horizontal">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
</asp:RadioButtonList>
我想要做的是在提交表单之前检查所有radiobuttonlist控件是否具有其选定值。但它的工作方式就像一个人选择了值,无论天气另一个人选择了值,该函数都会返回true。请帮我解决这个问题。提前谢谢。
答案 0 :(得分:12)
这个怎么样:
function Checkform() {
var result = true;
$('.rbl').each(function() {
var checked = $(this).find('input:radio:checked');
if (checked.length == 0) {
result = false;
return;
}
});
return result;
}
这将检查每个组并确定是否在该组中选择了radiobuttom。键是$(this).find('..')
,它返回当前组中的所有“已选中”单选按钮,如果没有选中,则返回零,如果选择了1,则为1。
答案 1 :(得分:1)
是的,您的函数将返回true,因为它首先假设其条件为“true”。当它循环通过“RadioButtonList1”并找到一个被选中的控件时(默认情况下我假设一个控件),它也将返回true。
请尝试以下代码:
var checkedRadioButtons = $('#form1 .rbl input:checked');
此行仅返回其值设置为选中的单选按钮。然后,您可以迭代这些元素以获取更多信息,例如它们的值:
checkedRadioButtons.each(function(Index){
return $(this).val();
});
答案 2 :(得分:0)
这将验证每个RadioButtonList是否有一个选中的项目。因此,如果有2个列表和2个已检查的项目,则返回true。
function Checkform() {
return $(".rbl :checked").length == $(".rbl:has(:radio)").length
}
答案 3 :(得分:0)
如果我正确理解您的问题,您需要确保在提交之前每个RadioButtonList
都选择了一些内容。有几种方法可以实现这一目标。
看起来你正在使用WebForms,所以你不需要触摸jQuery,你可以使用RequiredFieldValidator(每个RadioButtonList
一个)来完成这个任务,你就可以了。< / p>
如果你想采用jQuery方式,那么你可以更容易地将你的问题想象为“任何RadioButtonLists没有选择一个项目。”为了回答你:
选择具有相应类
获取一个不同的名称列表(就像单选按钮的分组一样)。有many种方法可以实现这一目标,有些方法比其他方法更容易。您可以使用map实用程序创建名称列表(然后您可以将其区分开来)
var all = $.map(
$(".rbl input:radio"),
function(n, i){ return n.attr("name") }
);
选择具有相应类别的所有checked
单选按钮(因为它是一个单选按钮列表,一次不能有多个checked
元素,因此它们将是唯一的)
var selected = $(".rbl input:radio:checked")
比较列表以查看它们是否大小相同。如果它们是,那么每个列表都选择了一个项目,如果它们不是,那么至少一个列表没有选择任何项目。您可以使用map实用程序将其转换为名称列表,但这不是必需的,因为您只是比较数组长度。
如果您还想知道哪个单选按钮列表没有选定值,则需要在步骤3的数组上应用map实用程序,然后查看哪些名称在all
但不在selected
。