Could someone help me validate this radio buttonlist in asp.net Im using a customvalidator with clientide script. I can't get it wqorking for some reason
<asp:RadioButtonList ID="radioGender" runat="server"
RepeatDirection="Horizontal">
<asp:ListItem Value="Male" Text="Male" />
<asp:ListItem Value="Female" Text="Female" />
</asp:RadioButtonList>
<asp:CustomValidator ID="valGender" runat="server"
ValidateEmptyText="true"
ClientValidationFunction="validateGender"
Display="Dynamic"
ErrorMessage="Please choose you're gender."
ValidationGroup="UserInfo">*</asp:CustomValidator>
<script language="javascript" type="text/javascript">
function validateGender(source, args) {
var radGender = document.getElementById("<%= radioGender.ClientID %>");
var elements = radGender.getElementsByTagName("input");
var selected = false;
for (var i = 0; i < elements.length; i++) {
if (elements[i].checked == true) {
selected = true;
break;
}
}
if (!selected) {
args.isValid = false;
return args.isValid;
} else {
args.isValid = true;
return args.isvalid;
}
}
</script>
Updated:
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<asp:RadioButtonList ID="radioGender" runat="server" ValidationGroup="UserInfo" Width="130px"
RepeatDirection="Horizontal">
<asp:ListItem Value="Male" Text="Male" />
<asp:ListItem Value="Female" Text="Female" />
<asp:ListItem Value="None" Text="None" Selected="True" style="display:none; width:0px" />
</asp:RadioButtonList>
</td>
<td align="left">
<asp:CustomValidator ID="valGender" runat="server"
ControlToValidate="radioGender"
ClientValidationFunction="validateGender"
ErrorMessage="Please select you're gender." EnableClientScript="true"
ValidationGroup="UserInfo" Display="Dynamic" style="margin-left:-5px">*</asp:CustomValidator>
<script language="javascript" type="text/javascript">
function validateGender(source, args) {
var radGender = document.getElementById("<%= radioGender.ClientID %>");
var elements = radGender.getElementsByTagName("input");
var selected = false;
for (var i = 0; i < elements.length; i++) {
if (elements[i].checked && elements[i].value == "None") {
selected = true;
break;
}
}
if (selected) {
args.IsValid = false;
return false;
} else {
args.IsValid = true;
return true;
}
}
</script>
</td>
</tr>
</table>
<asp:Button ID="btnSubmitProfile" runat="server"
Text="Save" OnClick="btnSubmitProfile_Click" ValidationGroup="UserInfo" />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="UserInfo" />
It should be like:
args.IsValid = false;
&
args.IsValid = true;
Make your "i" capital in "isValid".
this work for me..
function validateGender(source, args)
{
var MyRadio = document.getElementById("<%=testing.ClientID%>")
var options = MyRadio.getElementsByTagName("input")
var somethingChecked = false;
var s;
for (x = 0; x < options.length; ++x) {
if (options[x].checked) {
somethingChecked = true;
s = options[x].value;
}
}
if (!somethingChecked) {
args.IsValid = false;
}
else {
args.IsValid = true;
alert(s);
}
}
you should be add RepeatLayout="Flow"
properties in radiobuttonlist.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.