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 b
like @Jason wrote, when using CustomValidator client is excepting for source and arguments params. a quick sample of use both client and server side with CustomValidator.
CustomValidator use ClientValidationFunction and OnServerValidate properties:
<asp:CustomValidator ID="cvCreditCard" runat="server" ErrorMessage="Error Message" ControlToValidate="txtCardNumber" ClientValidationFunction="Validators.CardNumber" OnServerValidate="ValidateCreditCardValid">*</asp:CustomValidator>
Client side validation:
var Validators = {
CardNumber: function (source, clientside_arguments) {
var valid_val = true;
var txtCardNumber = clientside_arguments.Value; //(return the ControlToValidate value)
//make your checks here
clientside_arguments.IsValid = valid_val;
}}
server side validation:
protected void ValidateCreditCardValid(object sender, ServerValidateEventArgs e)
{
//make your checks here
e.IsValid = false;
}
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;
}
I solved this problem by creating a variable:
Boolean fieldIsValid = true;
and in the custom validating expression method I would change the value if arguments weren't true:
if(args.IsValid == false)
{
fieldIsValid = false;
}
else
{
fieldIsValid = true;
}
Then, I also put that in the submit click method:
protected void submit_Click(object sender, EventArgs e)
{
if (fieldIsValid)
{
//submit my things
}
}