Reader Level:
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.
  • 0
  • 0
  • 22440

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>

Article Extensions
Contents added by ketan patel on Jun 07, 2011
COMMENT USING

Trending up