Introduction

In this article we are going to create a fancy progress bar for an input form with limited characters using jQuery. We are using a script which allows you to restrict the number of characters inside a form element (ie: Textarea) while displaying a progress bar on the remaining characters beneath it.

Step 1: First we have to create a web Application.

img1.gif

Step 2: Secondly you have to add a new page to the website.

img2.gif

img3.gif

Step 3: In this step we will see how to add style sheet code. Whenever we write the style sheet code you have to be careful that it is written inside the <style></style> tags and you have to place it inside the head section.

Style Code:

<style type="text/css">
.progress
{
width: 2px;
height: 15px;
color: black;
font-size: 14px;
overflow: hidden;
background-color: red;
padding-left: 6px;
}
</
style
>


Step 4: In this step we have to write the script reference to the aspx page; let us see from where you have to write the script code.

img4.gif

Step 5: Let us see the script code you have to add inside the <script></script> tags and will be paced either in the head section or body section as you prefer.

<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>

Step 6: In this step we have to write the jQuery code which is given below.

<script type="text/JavaScript">
function textCounter(field, counter, maxlimit, linecounter) {
// text width//
var fieldWidth = parseInt(field.offsetWidth);
var charcnt = field.value.length;
// trim the extra text
if (charcnt > maxlimit) {
field.value = field.value.substring(0, maxlimit);
}
else {
// progress bar percentage
var percentage = parseInt(100 - ((maxlimit - charcnt) * 100) / maxlimit);
document.getElementById(counter).style.width = parseInt((fieldWidth * percentage) / 100) + "px";
document.getElementById(counter).innerHTML = "Limit: " + percentage + "%"
// color correction on style from CCFFF -> CC0000
setcolor(document.getElementById(counter), percentage, "background-color");
}
}
function setcolor(obj, percentage, prop) {
obj.style[prop] = "rgb(80%," + (100 - percentage) + "%," + (100 - percentage) + "%)";
}
</script>

Step 7: Let us see the Body code of the Default2.aspx page.

Body Code:

<body bgcolor="#0000FF">
<form>
<textarea rows="5" cols="40" name="maxcharfield" id="maxcharfield" onkeydown="textCounter(this,'progressbar1',20)"
onkeyup="textCounter(this,'progressbar1',20)" onfocus="textCounter(this,'progressbar1',20)"></textarea><br />
<div id="progressbar1" class="progress">
</div>
<script>textCounter(document.getElementById("maxcharfield"), "progressbar1", 20)</script>
</form
>
</body>

Step 8: In this step we will see the complete code of the Default2.aspx page which is given below.

Code:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!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 runat="server">
<title>Textarea input progress bar using jQuery</title>
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/JavaScript">
function textCounter(field, counter, maxlimit, linecounter) {
// text width//
var fieldWidth = parseInt(field.offsetWidth);
var charcnt = field.value.length;
// trim the extra text
if (charcnt > maxlimit) {
field.value = field.value.substring(0, maxlimit);
}
else {
// progress bar percentage
var percentage = parseInt(100 - ((maxlimit - charcnt) * 100) / maxlimit);
document.getElementById(counter).style.width = parseInt((fieldWidth * percentage) / 100) + "px";
document.getElementById(counter).innerHTML = "Limit: " + percentage + "%"
// color correction on style from CCFFF -> CC0000
setcolor(document.getElementById(counter), percentage, "background-color");
}
}
function setcolor(obj, percentage, prop) {
obj.style[prop] = "rgb(80%," + (100 - percentage) + "%," + (100 - percentage) + "%)";
}
</script>
<
style type="text/css">
.progress
{
width: 2px;
height: 15px;
color: black;
font-size: 14px;
overflow: hidden;
background-color: red;
padding-left: 6px;
}
</
style
>
</head>
<
body bgcolor="#0000FF">
<form>
<textarea rows="5" cols="40" name="maxcharfield" id="maxcharfield" onkeydown="textCounter(this,'progressbar1',20)"
onkeyup="textCounter(this,'progressbar1',20)" onfocus="textCounter(this,'progressbar1',20)"></textarea><br />
<div id="progressbar1" class="progress">
</div>
<script>textCounter(document.getElementById("maxcharfield"), "progressbar1", 20)</script>
</form
>
</body>
</
html>

Step 9: In this step we are going to run the Default2.aspx page by pressing F5.

img5.gif

Now enter text inside the Textarea; you will see.

img6.gif

See the effect.

img7.gif

img8.gif

img9.gif

Once the progress bar is completed 100% you can not write anything inside the Textarea.

Resources