본문 바로가기
개발/JavaScript

[JavaScript] CheckBox 전체 선택, 전체 해제 하기

by 코딩하는 흰둥이 2025. 2. 23.

 

기본 폼

 

전체 체크했을때

 

 

한 행을 체크 해제 했을때

 

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div>
    <table border="1">
        <thead>
        <tr>
            <th style="width: 10%"><input type="checkbox" name="checkAll" onclick="checkAll(this)"></th>
            <th style="width: 30%">이름</th>
            <th style="width: 20%">번호</th>
        </tr>
        </thead>
        <tbody>
            <tr>
                <td style="text-align: center"><input type="checkbox" name="checkB" onclick="checkClick(this)"></td>
                <td>흰둥이1</td>
                <td>000-0000-0000</td>
            </tr>
            <tr>
                <td style="text-align: center"><input type="checkbox" name="checkB" onclick="checkClick(this)"></td>
                <td>흰둥이2</td>
                <td>111-1111-1111</td>
            </tr>
        </tbody>
    </table>
</div>



</body>
<script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
<script>

    function checkAll(e){
        // 전체 체크박스가 체크되어 있으면
        if(e.checked == true){
            // 같은 이름의 체크박스 모두 checked
            $("input[name=checkB]").prop("checked", true);
        }else{
            $("input[name=checkB]").prop("checked", false);
        }
    }

    function checkClick(e){
        // 전체 선택 후 -> 다른 체크 박스를 해제 했을때 -> 전체 체크박스(checkAll) 체크 해제 해주기
        if(e.checked == false) {
            $("input[name=checkAll]").prop("checked", false);
        }else{
            let checkBoxAllCount = $("input[name=checkB]").length;              // 체크박스 총 개수
            let checkBoxCheckCount = $("input[name=checkB]:checked").length;    // 체크된 체크박스 개수

            // 체크박스 개수와 체크된 체크박스의 수가 같으면 전체 체크박스(checkAll) 체크 해주기
            if(checkBoxAllCount == checkBoxCheckCount){
                $("input[name=checkAll]").prop("checked", true);
            }
        }
    }

</script>
</html>

 

 

핵심은 동일한 name 을 주고 제어를 해주면 된다

 

 

댓글