Search code examples
javascriptasp.netvalidationcustomvalidator

ASP CustomValidator, advancing to postback after error


I have an ASP .NET page with ASP validators (Required Field, Regular Expression,...) plus java script functions for additional validation (for example, to check if second date bigger than first date, among others).

I usually do:

<script type="text/javascript">

    function validate() {
        // ...
        alert('Not valid!');
        return false;
    }    
</script>


<asp:Button ID="Button1" runat="server" Text="Add" 
            OnClientClick="return validate();" OnClick="Button1_Click" />

So, the button advances to the postback if the asp and the javascript validation both pass, and it works fine.

I’m trying out the custom validator:

<asp:CustomValidator ID="CustomValidator1" 
EnableClientScript="true" runat="server" ControlToValidate="TextBox1" 
ClientValidationFunction="validate();" >
</asp:CustomValidator> 

(also tried with ClientValidationFunction="return validate();")

But the page is continuously advancing to the postback, even after showing the “not valid” alert... Any thoughts? Thanks!


Solution

  • When using a CustomValidator, the client side validation function needs to accept a source and an arguments parameter. Then, to mark the validation as failed, you set arguments.IsValid to false. Here is the MSDN page for the CustomValidator.

    function validate(source, arguments) {
       // ...
    
       alert('Not valid!');
       arguments.IsValid=false;
    }