메뉴 건너뛰기

?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

체크박스가 포함된 게시판형태의 데이터들을 다루다보면 전체 선택 해제 기능이 자주 들어갑니다.

전체 선택에 따른 하위 체크박스들을 선택하거나 해제하고 전체박스가 선택된 상태에서 하위 체크박스를 해제하면 전체체크박스의 상태값도 해제되도록 변경되는 예제를 진행해보겠습니다.

 

체크박스 전체 선택, 해제 제어하기

allcheckbox.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<body>
    <table>
        <tr>
            <th>
                <input type="checkbox" name="check" class="allcheck">
            </th>
            <th>순번</th>
            <th>제목</th>
        </tr>
        <tr>
            <td><input type="checkbox" name="check"></td>
            <td>1</td>
            <td>제목입니다.</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="check"></td>
            <td>2</td>
            <td>제목입니다.</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="check"></td>
            <td>3</td>
            <td>제목입니다.</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="check"></td>
            <td>4</td>
            <td>제목입니다.</td>
        </tr>
    </table>
</body>
</html>

css

*{margin:0;padding:0;}
table{width:800px;text-align:center;border-collapse:collapse;border-left:1px solid #ddd;border-right: 1px solid #ddd;}
table tr{border-bottom: 1px solid #ddd;}

JS

$(function(){
    $("[type=checkbox][name=check]").on("change", function(){ //0
        var check = $(this).prop("checked"); //1
        //전체 체크
        if($(this).hasClass("allcheck")){ //2
            $("[type=checkbox][name=check]").prop("checked", check);

        //단일 체크
        }else{ //3
            var all = $("[type=checkbox][name=check].allcheck");
            var allcheck = all.prop("checked")
            if(check != allcheck){ //3-1
                var len = $("[type=checkbox][name=check]").not(".allcheck").length; //3-2
                var ckLen = $("[type=checkbox][name=check]:checked").not(".allcheck").length; //3-2
                if(len === ckLen){ //3-3
                    all.prop("checked", true);
                }else{
                    all.prop("checked", false);
                }
            }
        }
    });
});

저는 모든 체크박스의 이름을 check로 두었고 전체선택기능의 체크박스와 일반체크박스를 class에 allcheck라는 이름으로 구분하였습니다.

 

주석번호와 매칭하여 설명을 확인하시면 됩니다.

0. jQuery를 활용하여 페이지가 로드되면 체크박스에 이벤트를 추가합니다.

1. input type이 checkbox이면서 name값이 check인 요소에 change 이벤트가 발생하면 현재 발생한 요소의 checked 값을 받아옵니다.

2. 이벤트가 발생한 요소의 클래스에 allcheck가 존재하면 전체 체크박스로 판단하고 전체 체크를 진행합니다.

(해제가 되었으면 전부다 해제, 선택이면 전부 다 선택 처리이므로 자신의 상태값과 맞춰줍니다.) 

3. 단일 체크일 경우

   3-1. 전체 체크박스의 상태값과 자신의 상태값을 비교합니다. 상태가 다를 경우 확인 작업이 필요합니다.

   3-2. 페이지에 노출된 체크 박스의 개수와 체크된 개수가 같은지 확인을 하기 위해 값을 가져옵니다.

         여기서 .not()메소드를 사용하여 전체 체크박스는 제외하였습니다.

   3-3. 가져온 개수가 서로 같다면 전체가 이미 선택된 것이므로 전체체크박스에도 선택처리를 합니다.

         반대의 경우 전체가 체크된게 아니므로 전체체크박스에 해제처리를 합니다.

 

동작 결과

 

 

 

잘 동작한다!

  1. No Image 25Mar
    by
    2021/03/25 Views 322 

    기본 동작 막기

  2. jQuery - 드래그앤드롭(DragAndDrop)을 통한 파일 업로드

  3. 09Mar
    by 조쉬
    2021/03/09 Views 659 

    jQuery - checkbox 전체 선택, 해제 기능 및 단일 체크박스가 해제되었을때 전체 선택 해제 하기

  4. jQuery - ajax xhr을 활용한 파일 업로드 진행 상태 확인하기

  5. jQuery - 드래그, 리사이즈 이벤트에 따른 영역 침범 막기

  6. jQuery - 클릭이벤트 동적 처리하기($("").click(), on('click') 차이)

  7. jQuery - radio, checkBox값 가져오기, 선택하기, 제어 등

  8. No Image 09Mar
    by
    2021/03/09 Views 1546 

    jQuery - ajaxSubmit 사용법 및 유의사항(페이지 리로드 현상)

  9. No Image 25Nov
    by
    2020/11/25 Views 1543 

    이미지 회전, rotate();

  10. No Image 25Nov
    by
    2020/11/25 Views 1059 

    이미지 확대/축소

  11. No Image 24Aug
    by
    2020/08/24 Views 1005 

    사업자 번호를 입력하면 자동으로 하이픈을 붙여줍니다.

  12. No Image 27Aug
    by
    2019/08/27 Views 1784 

    jquery 자식창에서 부모창으로 값 전달

  13. No Image 04Jun
    by
    2019/06/04 Views 894 

    jQuery 일반적 팁

  14. No Image 04Jun
    by
    2019/06/04 Views 791 

    JS 타이머 샘플

  15. No Image 04Jun
    by
    2019/06/04 Views 831 

    JS 날짜 자료 비교

  16. No Image 04Jun
    by
    2019/06/04 Views 895 

    텍스트 필드에 기본글이 마우스 클릭하면 지워지게 하기 폼필드 소스 내에 아래 태그를 삽입한다.

  17. No Image 04Jun
    by
    2019/06/04 Views 841 

    //ex)텍스트 박스 포커스 활성, 비활성 이벤트

  18. No Image 04Jun
    by
    2019/06/04 Views 746 

    JS 첵박스 샘플

  19. No Image 04Jun
    by
    2019/06/04 Views 838 

    체크박스 전체선택/해지

  20. No Image 21May
    by
    2019/05/21 Views 3156 

    jquery 드래그 앤 드롭 파일 업로드

Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved