我想使用jQuery验证RadioButtonList
以确保用户已检查其中一个值。如果用户未检查任何单选按钮,则会显示警告。然而,问题是即使在用户检查了其中一个单选按钮之后,警报仍然会提示。根据我在网上找到的内容,我看到的以下jQuery代码似乎是正确的。
这是我的RadioButtonList
:
<asp:RadioButtonList ID="rbClass" runat="server" CssClass="rbClass">
<asp:ListItem Text="Asset Management Tool" Value="Asset Management Tool"></asp:ListItem>
<asp:ListItem Text="Backup Tool" Value="Backup Tool"></asp:ListItem>
<asp:ListItem Text="Communication Tool" Value="Communication Tool"></asp:ListItem>
<asp:ListItem Text="Developer Tool" Value="Developer Tool"></asp:ListItem>
</asp:RadioButtonList>
这是我的jQuery:
if ($('#rbClass').is(':checked') == false) {
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
alert("Please select the software's classification.");
}
正如您所看到的,我尝试了几种不同的方法来检查是否已检查RadioButtonList
。我还尝试使用CssClass
属性(.rbClass
)进行验证,但它也无法按预期工作。我错过了什么吗?
答案 0 :(得分:1)
您无法通过javascript直接访问ASP控件,因为这些控件将呈现为HTML,因此其ID将被更改,并且它将与父级相关联。因此,您可以在此处执行以下操作:使用其客户端ID,如下所示:
var selectedCount=$("#<%=rbClass.ClientID %> input:checked").length;
if(selectedCount==0)
{
// Statements here nothing is checked
}
答案 1 :(得分:0)
我在互联网上找到了这些例子。
<script type = "text/javascript">
function Validate()
{
var RB1 = document.getElementById("<%=RadioButtonList1.ClientID%>");
var radio = RB1.getElementsByTagName("input");
var isChecked=false;
for (var i=0;i<radio.length;i++)
{
if (radio[i].checked)
{
isChecked=true;
break;
}
}
if(!isChecked)
{
alert("Please select an item");
}
return isChecked;
}
</script>
有关validate-aspnet-radiobuttonlist,ASP.Net-RadioButtonList-Control.aspx
的更多参考资料