1

現在、JavaScript を使用してテキストボックスに数字が含まれているかどうかを検証する CustomValidator を使用しています。検証エラーを満たすと、送信するまでメッセージがクリアされません。これを修正して、他のすぐに使用できるバリデーターのようにクリアするにはどうすればよいですか? C# で ASP.NET を使用しています。

      <script type="text/javascript">

               function testnumbers(source, args) {
                   var s1 = document.getElementById('<%=arubaBox.ClientID%>').value; var s2 = document.getElementById('<%=shipBox.ClientID%>').value;


                   if (s1 == "" && s2 == "")

                       args.IsValid = false;
                   else if (s1 == "" && s2 != "")

                       args.IsValid = true;
                   else if (s1 != "" && s2 == "")

                       args.IsValid = true;
                   else if (s1 != "" && s2 !== "") args.IsValid = true;

               }

        </script>



   <asp:TextBox ID="aBox" runat="server" MaxLength="7"></asp:TextBox>



  <asp:CustomValidator 
    ID="CustomValidator1" runat="server"                       ClientValidationFunction="testnumbers" 
    ErrorMessage="CustomValidator"
     ValidationGroup="Contact"
     Text=" Please provide A # or Shipping Account #" 
    CssClass="errormessage"
     Display="Dynamic" >
    </asp:CustomValidator>

 &nbsp<asp:RegularExpressionValidator
        id="RegularExpressionValidator1"
        runat="server"
        ErrorMessage="Field not valid!"
        ControlToValidate="aBox"
        ValidationExpression="[0-9a-zA-Z]{5,}"
        ValidationGroup="Contact"
         />&nbsp

 <asp:RegularExpressionValidator 
    ID="NumErrAru" 
    runat="server"
    ControlToValidate="aBox"
     CssClass="errormessage" 
     ErrorMessage=" Numbers Only"
     ValidationExpression="^[0-9]+$"
     ValidationGroup="Contact" 
    Display="Dynamic" 
    Text=" Numbers Only">
    </asp:RegularExpressionValidator>
4

1 に答える 1

1

Page_ClientValidate メソッドと Page_Validators コレクションの両方を使用して、ページの検証を制御できます。

function jsValidation(){
    Page_ClientValidate();
    $.each(Page_Validators, function(key, value) { 
        if( value.IsValid == false) {
            //- error in validation, locate failing input control 
            var oE = value.ControlToValidate; 
            //- you can for example set focus back to it, if needed
            oE.focus();
        }
    });
}

要素がフォーカスを失ったときに、 blurイベントを使用して関数を呼び出します。

$('#<%=element.ClientID%>').blur(function() {   jsValidation(); }); 

この実装は jQuery を使用しており、テストされていませんが、そのままでほとんど機能するはずです。必要に応じて、jQuery インタラクションを単純に削除して、従来の js を使用することもできます。

お役に立てれば。

于 2012-07-27T15:08:14.377 に答える