2012-03-02 7 views
0

誰かが私にこのラジオボタンリストをasp.netで検証する手助けをしてくれましたか?私はclientideスクリプトでcustomvalidatorを使用しています。私はそれが更新RadioButtonList CustomValidator

<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> 

何らかの理由wqorking取得することはできません。

<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" /> 
+0

いずれか一方をデフォルトでチェックしてみませんか?次に、もう検証する必要はありません。 –

+0

いいえ、すべての人が女性になるとは限りません。さらに、ラジオボタンリストを使用してさらに使用するようにしたいです。 – ONYX

答えて

0

それは次のようにする必要があります:

args.IsValid =偽;

&

args.IsValid = TRUE。

"isValid"に "i"の大文字を入れてください。

+0

自分のコードを更新しました。このようにした – ONYX

0

私にとって、この作品は..

 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); 
     } 
    } 

あなたがRadioButtonListのにRepeatLayout="Flow"プロパティを追加する必要があります。

+0

私は自分のコードを更新しました。隠されたラジオボタンがある場合には、この方法でしかできませんでした。返信がありましたが、私はすでにそこに置いてありました。 – ONYX

関連する問題