简体   繁体   中英

RadioButtonList CustomValidator

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM