You are not Logged in
Would you like to Login or Register

Today is: Friday, 21 November, 2008
Check this months hot topics

Custom Validators using Client Side JavaScript

In my latest project I am really enjoying using the Ajax Control Toolkit, particularly the ModalPopupExtender.

I've been using the popup panels to capture data, but I needed to validate the data that a user enters into certain fields. ASP.net's validators are the obvious choice, but when you have employed an AJAX control you need to validate the entry on the client's browser. This is easy to do using the ClientValidationFunction attribute of the validator.

<asp:TextBox ID="DiscountAmountTextBox" runat="server" Columns="10"></asp:TextBox>
<asp:CustomValidator id="DiscountAmountCustomValidator" 
        runat="server" 
        ControlToValidate="DiscountAmountTextBox" 
        ValidateEmptyText="true" 
        ClientValidationFunction="CheckDiscountAmount" 
        ErrorMessage="Please enter either an amount or a discount" 
        ToolTip="Please enter either an amount or a percentage">*</asp:CustomValidator>

then create a JavaScript function to do the validation. Here I have created a Regular Expression to validate decimals. Then simply set the args.IsValid property to either true or false and return.

var numericMatchexpression = /^(-)?(\d*)(\.?)(\d*)$/;

function CheckDiscountAmount(sender, args){
    
    if(args.Value != "" && GetElement(DiscountPercentageId).value != ""){
        args.IsValid = false;
        return;
    }
    
    var re = new RegExp(numericMatchexpression);
    
    if(!re.test(args.Value)){
        args.IsValid = false;
        return;
    }
    
    args.IsValid = true;
    return;
    
}

function GetElement(id){
    
    if(document.all){
        return document.all[id];
    }else {
        return document.getElementById(id);        
    }
    
}

In this example I have used the ScriptManager to write out a JavaScript variable (DiscountPercentageId) with the ClientID of the ASP.net TextBox I'm validating.

You'll also notice my GetElement function to handle the browser compatibility.

I hope this proves useful in your next AJAXian web application.

kick it on DotNetKicks.com del.icio.us digg Mister Wong YahooMyWeb Reddit Furl Spurl blogmarks
Paul Marshall Skype
Author : Paul Marshall
Published : Friday, 02 November, 2007

A self confessed Microsoft bigot, Paul loves all Microsoft products with a particular fondness for SQL Server. Paul is currently focusing on Web 2.0 patterns and practices and is always looking for better ways of doing things. I love the .net platform, and I find it to be the most productive toolset I have used to date.

Add Comment

Enter your comment below and it will be submitted for moderation.

Your Name

Add Tag

Please enter tags for this article, seperated by semi-colon ;

View Tag's by : # articles | # views