Controlling Button Execution Through JavaScript Function

This article is basically a continuation of my previous article of ing a value from a JavaScript function to an ASP.NET function, if you haven't read it then kindly go to it at the following link:

http://www.c-sharpcorner.com/uploadfile/17e8f6/ing-values-from-javascript-functions-to-Asp-Net-functions-in-Asp-Net/
 
In the above example we have made use of a hidden field to a value from a JavaScript function to an ASP.Net function so that we can validate the age of an employee by storing the value in the hidden field using the JavaScript function and then validating the age in the ASP.NET function by getting the value. The same technique can be done simply through JavaScript. But here we are not concerned with the value to be retrieved on the server side.
 
That means that on the button click event a JavaScript function would be called and it will validate whether the age is >= 18 then only the record would be stored in the database and displayed on the gridview or else an error message should be returned to the user stating that your age is invalid.
 
For doing this we need a SQL table and some procedures; here are those queries:
 
 
create table Employee
 
(
 
    Empid int identity(1,1)not null,
 
    EName varchar(30)not null,
 
    EAge int not null,
 
    ESalary int not null,
 
    constraint pkeid primary key(Empid)
 

 
select * from Employee 
 
create procedure prcAddEmp
 
(
 
    @name varchar(30),
    
@age int,
    
@salary int
 
)
 
as
 begin
 insert
into Employee
 
values(@name,@age,@salary)
 
end 
 create
procedure prcDisplayRecords
 
as
 begin
 select
* from Employee
 
end
 

The following is the front-end structure:

front-end-structure.gif
 
The following is the source code for it:
 
 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <
html xmlns="http://www.w3.org/1999/xhtml">
 <
head id="Head1" runat="server">
 
    <title>Untitled Page</title> 
    
<script type="text/javascript">
 
        function validateAge()
         {
            
var age=document.forms[0]["txtAge"].value;
            
if(age>=18)
                
return true;
            
else
 
            {
                 alert("Invalid Age");
                
return false;
             }
         }
    
</script> 
 
</head>
 <
body>
 
    <form id="form1" runat="server">
 
        <div>
 
            <table>
 
                <tr>
 
                    <td>Name:
                    
</td>
 
                    <td>
 
                        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
 
                    </td>
 
                </tr>
 
                <tr>
 
                    <td>Age:
                    
</td>
 
                    <td>
 
                        <asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
 
                    </td>
 
                </tr>
 
                <tr>
 
                    <td>Salary:
                    
</td>
 
                    <td>
 
                        <asp:TextBox ID="txtSal" runat="server"></asp:TextBox>
 
                    </td>
 
                </tr>
 
                <tr>
 
                    <td colspan="2" align="right">
 
                        <asp:Button ID="btnSave" OnClientClick="javascript:return validateAge()" runat="server" Text="Save" OnClick="btnSave_Click" />
 
                    </td>
 
                </tr>
 
            </table>
 
            <br />
 
            <asp:GridView ID="gvwData" runat="server">
 
            </asp:GridView>
 
        </div>
 
    </form>
 </
body>
 </
html>
 

The following is the code behind for it:
 
 
using System;
 
using System.Configuration;
 
using System.Data;
 
using System.Linq;
 
using System.Web;
 
using System.Web.Security;
 
using System.Web.UI;
 
using System.Web.UI.HtmlControls;
 
using System.Web.UI.WebControls;
 
using System.Web.UI.WebControls.WebParts;
 
using System.Xml.Linq;
 
using System.Data.SqlClient; 
 
 
public partial class _Default : System.Web.UI.Page
 
{
    
SqlConnection con;
    
SqlCommand cmd;
    
DataSet ds;
    
string dbcon = ConfigurationManager.ConnectionStrings["myCon"].ConnectionString; 
    
protected void Page_Load(object sender, EventArgs e)
     { 
     }
    
protected void btnSave_Click(object sender, EventArgs e)
     {
        
string msg = "";
         con =
new SqlConnection(dbcon);
         cmd =
new SqlCommand("prcAddEmp", con);
         cmd.CommandType =
CommandType.StoredProcedure;
         cmd.Parameters.AddWithValue(
"@name", txtName.Text);
         cmd.Parameters.AddWithValue(
"@age", txtAge.Text);
         cmd.Parameters.AddWithValue(
"@salary ", txtSal.Text);
         con.Open();
        
int rows = cmd.ExecuteNonQuery();
        
if (rows > 0)
             msg =
"<script>alert('Record Saved Successfully')</script>";
        
else
 
            msg = "<script>alert('Error Saving Record')</script>";
         ClientScript.RegisterClientScriptBlock(
this.GetType(), "Message", msg);
         con.close();
     }
 
}
 

Here is the output for it:
 
If the age entered is >= 18 then the following output is generated:

validaion-through-javascript.gif

validaion-through-javascript1.gif
 
Or else if the age < 18:

validaion-through-javascript2.gif
 
The concept is quite clear; over here what we did is, in the Button declaration we added an onClientClick event which is basically a JavaScript function which returns either true (if the age value is >= 18) or else false.
 
 
<asp:Button ID="btnSave" OnClientClick="javascript:return validateAge()" runat="server" Text="Save" OnClick="btnSave_Click" />
 

The default behaviour of the button is to do a post back whenever the button is clicked, but since the JavaScript function is returning true or false, whenever the JavaScript function returns false, the button's server-side code (ie Button_Click) event is not called because it stops the execution there itself.
 
Hope you have liked the article.
 
With Regards,
 
Vishal Gilbile.

Up Next
    Ebook Download
    View all
    Learn
    View all