如何通过选中/取消选中一个复选框来检查和取消选中html表中的所有复选框?

时间:2013-07-23 15:06:29

标签: jquery checkbox html-table

我有一个表,有行,每行都有一个复选框,thead处有一个主复选框。我的代码:

<table border="1">
    <thead>
        <tr>
            <th><input type="checkbox" id="allcb" name="allcb"/></th>
            <th>values</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="checkbox" id="cb1" name="cb1"/></td>
            <td>value1</td>
        </tr>
        <tr>
            <td><input type="checkbox" id="cb2" name="cb2"/></td>
            <td>value2</td>
        </tr>
        <tr>
            <td><input type="checkbox" id="cb3" name="cb3"/></td>
            <td>value3</td>
        </tr>
    </tbody>
</table>

(也尝试here

任何人都可以帮助我,如果我检查顶部的主复选框怎么办,将检查所有复选框,如果我取消选中主,则将取消选中所有复选框。 谢谢你的帮助!

3 个答案:

答案 0 :(得分:14)

工作演示http://jsfiddle.net/xYAfj/2/

$('#allcb').change(function(){
    if($(this).prop('checked')){
        $('tbody tr td input[type="checkbox"]').each(function(){
            $(this).prop('checked', true);
        });
    }else{
        $('tbody tr td input[type="checkbox"]').each(function(){
            $(this).prop('checked', false);
        });
    }
});

更短的代码

工作演示http://jsfiddle.net/cse_tushar/4tss8/

$('#allcb').change(function () {
    $('tbody tr td input[type="checkbox"]').prop('checked', $(this).prop('checked'));
});

答案 1 :(得分:3)

$(function(){
       $("#allcb").click(function() {
       var chkBoxes = $("input[id^=cb]");
       chkBoxes.prop("checked", !chkBoxes.prop("checked"));
   }); 
});

http://jsfiddle.net/7f7Kz/2/

答案 2 :(得分:1)

我通过将表格中的复选框名称从 cb n 更改为 cb [] (更适合服务器操作)。我还考虑到可以通过单击另一个复选框来更改主复选框状态的事实:如果用户手动选择所有其他复选框,则主复选框应该反映它;此外,如果用户在单击主复选框后取消选中一行以检查所有其他行,则主复选框应取消选中。

你可以看到它在那里工作:https://jsfiddle.net/h6tgj02p/

<table border="1">
    <thead>
        <tr>
            <th><input type="checkbox" id="allcb" name="allcb"/></th>
            <th>values</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><input type="checkbox" id="cb1" name="cb[]"/></td>
            <td>value1</td>
        </tr>
        <tr>
            <td><input type="checkbox" id="cb2" name="cb[]"/></td>
            <td>value2</td>
        </tr>
        <tr>
            <td><input type="checkbox" id="cb3" name="cb[]"/></td>
            <td>value3</td>
        </tr>
    </tbody>
</table>

<script  type="text/javascript">
$(document).ready(function() {

    /*
    * Click on select all checkbox
    */
    $('#allcb').click(function(e) {
        $('[name="cb[]"]').prop('checked', this.checked);
    });

    /*
    * Click on another checkbox can affect the select all checkbox
    */
    $('[name="cb[]"]').click(function(e) {
        if ($('[name="cb[]"]:checked').length == $('[name="cb[]"]').length || !this.checked)
            $('#allcb').prop('checked', this.checked);
    });

});

</script>