SIGN UP MEMBER LOGIN:    
ARTICLE

Checkboxes in HTML Table with JQuery: Checked All, Unchecked, Enable, Disable operation

Posted by Dhananjay Kumar Articles | JQuery November 01, 2010
This article shows how to have Checked All, Unchecked, Enable, Disable operation in checkboxes in HTML table with Jquery.
Reader Level:

Objective 

In this article we will see, 
  1. How to apply Jquery on HTML table?
  2. How to check and uncheck all the checkboxes?
  3. How to check how many numbers of checkboxes are checked?
  4. How to disable and enable the checkboxes.
Suppose we have a HTML table as below.

1.gif 

And HTML for above table is as below,

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<table id="tbl" border="10">
<thead>
<tr>
<td><input type="checkbox" id = "chckHead" /></td>
<td>First Row</td>
<td>Second Row</td>
<td>Third Row</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>1</td>
<td>1</td>
<td>1</td>
 </tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>2</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>3</td>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>4</td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>5</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>6</td>
<td>6</td>
<td>6</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>7</td>
<td>7</td>
<td>7</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>8</td>
<td>8</td>
<td>8</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>9</td>
<td>9</td>
<td>9</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>10</td>
<td>10</td>
<td>10</td>
</tr>
</tbody>
</table>
</body>
</html>

Point to be noted in above HTML 
  1. All the checkboxes in table body rows are sharing a class chcktb1.
  2. There is a checkbox in the header of the table and id of this table is chkHead.
To work with Jquery on the HTML table, we need to include JQuery file in Head section of HTML.

2.gif 

Requirement #1: Checking and Unchecking all the checkboxes

When we click on top checkbox all the checkbox should get checked. If already checkbox are checked then they should get unchecked. 

We will use Jquery for this operation.

Before applying Jquery we need to take care below points. 
  1. Id of the header checkbox is chkHead. So on the click event we will write the code for checking or unchecking operation on checkbox of all the rows 
  2. We will select header checkbox as 

    3.gif
  3. We will select checkbox of table rows as

    4.gif

    Note: If we see the above selection of control.  If we are controlling a HTML control by ID, we have to select it by dot(.) . In above we are selecting checkboxes of table body with dot (.) because they are decorated with class. If a control is decorated with ID then we will select them with hash (#)
  4. After the body tag writes a script for checking or unchecking all the checkboxes.

    5.gif
Now in above Jquery script
  1. We are selecting the checkbox of the table head (Thead) with # tag. Because if you see , we have given the ID for this checkbox. 
  2. On the click function, we are calling the anonymous function.

    6.gif

    In the curly braces, we will write the code to check or uncheck the checkboxes.
  3. This keyword represents the selected control. So header checkbox is being selected and we are calling click event of that. First we are checking, if header checkbox is checked then all the rows checkbox will be checked and vice versa.
  4. We are checking if row checkboxes are checked then we are unchecking them and vice versa.
Script would look like below.  

<script type="text/javascript">
    $('#chckHead').click(function () {
        if (this.checked == false) {
            $('.chcktbl:checked').attr('checked', false);
        }
        else {
            $('.chcktbl:not(:checked)').attr('checked', true);
        }
    });
    $('#chckHead').click(function () {
    });
</script>

Output

7.gif
 
If we check header checkbox all the checkbox will get checked and vice versa.

Requirement #2: Counting number of Checkbox checked or unchecked 

8.gif 

Above script will give the number of checkboxes checked.  If you see the HTML, all the row checkboxes are having the same class called chcktb1.

To find all the uncheck checkboxes 

9.gif
 
Requirement #3: Disabling checking of checkboxes if 4 checkbox are already checked.

Let us say we have a requirement that user should able to select only 4 out of 10 checkboxes. When user tries to check 5th checkbox, user should get an error alert and all unchecked checkbox should get disabled.

 Script will be as below 

<script type="text/javascript">
    $('.chcktbl').click(function () {
        var length = $('.chcktbl:checked').length;      
        if (length > 3) {
            alert(length);
            $('.chcktbl:not(:checked)').attr('disabled', true);
        }
        else {
            $('.chcktbl:not(:checked)').attr('disabled', false);
        }
    });
</script>

10.gif

So in above table when user selected 4th checkbox after that all the uncheck checkboxes are disabled.

Full HTML with JQuery is as below,

<!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>
     <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<table id="tbl" border="10">
<thead>
<tr>
<td><input type="checkbox" id ="chckHead"/></td>
<td>First Row</td>
<td>Second Row</td>
<td>Third Row</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>1</td>
<td>1</td>
<td>1</td>
 </tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>2</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>3</td>
<td>3</td>
<td>3</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>4</td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>5</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>6</td>
<td>6</td>
<td>6</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>7</td>
<td>7</td>
<td>7</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>8</td>
<td>8</td>
<td>8</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>9</td>
<td>9</td>
<td>9</td>
</tr>
<tr>
<td>
<input type="checkbox" class = "chcktbl" />
</td>
<td>10</td>
<td>10</td>
<td>10</td>
</tr>
</tbody>
</table>
</body>
<script type="text/javascript">
    $('.chcktbl').click(function () {
        var length = $('.chcktbl:checked').length;      
        if (length > 3) {
            alert(length);
            $('.chcktbl:not(:checked)').attr('disabled', true);
        }
        else {
            $('.chcktbl:not(:checked)').attr('disabled', false);
        }
    });
</script>
<script type="text/javascript">
    $('#chckHead').click(function () {
        if (this.checked == false) {
            $('.chcktbl:checked').attr('checked', false);
        }
        else {
            $('.chcktbl:not(:checked)').attr('checked', true);
        }
    });
    $('#chckHead').click(function () {
    });
</script>
</html>

Login to add your contents and source code to this article
Article Extensions
Contents added by ketan patel on Jun 07, 2011
share this article :
post comment
 

very nice explanation.

Posted by Anil Kumar May 06, 2011
6 Months Free & No Setup Fees ASP.NET Hosting!
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Nevron Gauge for SharePoint
Become a Sponsor