코가이
코딩할 때 가장 어려운 건 이름 짓기
코가이
전체 방문자
오늘
어제
  • 분류 전체보기
    • javascript
    • PHP
    • Database
    • Python
    • 개발자 푸념
    • 운영체제
    • 리눅스
    • 개발 관련
    • 기타

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 전체선택
  • JS
  • 체크박스
  • Entity
  • CodeIgniter
  • jQuery
  • JavaScript
  • 바인드
  • 바인딩
  • checkbox

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
코가이

코딩할 때 가장 어려운 건 이름 짓기

javascript

[javascript] 체크박스 전체 선택 및 해제 / How to check all checkboxes using javascript| sangria.javascript.library

2022. 2. 25. 01:04

🎈 예제 Example


💻 HTML

<label><input type="checkbox" class="all_check">전체</label>
<label><input type="checkbox" class="check_list" value="a">a</label>
<label><input type="checkbox" class="check_list" value="b">b</label>
<label><input type="checkbox" class="check_list" value="c">c</label>

💻 사용법 How to use

// checkBoxToggleEvent('전체 선택 선택자', '기본 선택 선택자');
checkBoxToggleEvent('.all_check', '.check_list');

💻 코드 Code (ES6+)

/**
 * 전체 체크버튼이 활성화 상태에 따른 기본 체크박스 전체 선택
 * @param all_selector 전체 체크박스 셀렉터
 * @param check_selector 체크박스 셀렉터
 */
function checkAllToggle(all_selector, check_selector){
    let el_all_check = document.querySelector(all_selector);
    let el_check_all = document.querySelectorAll(check_selector);
    let is_check = el_all_check.checked;

    if( is_check === true ){
        el_check_all.forEach((checkbox) => {
            if( checkbox.disabled !== true ){
                checkbox.setAttribute('checked', 'checked');
                checkbox.checked = true;
            }
        })
    } else {
        el_check_all.forEach((checkbox) => {
            checkbox.removeAttribute('checked', 'checked');
            checkbox.checked = false;
        })
    }
}

/**
 * 체크박스 선택수에 따라 전체 선택 체크 활성/비활성
 * @param all_selector 전체 체크박스 셀렉터
 * @param check_selector 체크박스 셀렉터
 */
function checkBoxToggle(all_selector, check_selector){
    let el_all_check = document.querySelector(all_selector);
    let checkbox_ln = document.querySelectorAll(check_selector+':enabled').length;
    let check_ln = document.querySelectorAll(check_selector+':checked:enabled').length;
    if( checkbox_ln === check_ln ){
        el_all_check.setAttribute('checked', 'checked');
        el_all_check.checked = true;
    } else {
        el_all_check.removeAttribute('checked', 'checked');
        el_all_check.checked = false;
    }
}

/**
 * 체크박스 토글 이벤트
 * @param all_selector 전체 체크박스 셀렉터
 * @param check_selector 체크박스 셀렉터
 */
function checkBoxToggleEvent(all_selector, check_selector){
    // 체크박스(전체) 변경시
    let el_all_check = document.querySelector(all_selector);
    // 신규 이벤트
    el_all_check.addEventListener('change', function(){
        checkAllToggle(all_selector, check_selector);
    });

    // 체크박스(기본) 변경시
    let el_check_all = document.querySelectorAll(check_selector);
    el_check_all.forEach((el_check, idx) => {
        el_check.addEventListener('change', function(){
            checkBoxToggle(all_selector, check_selector);
        });
    })
}

 

sangria.javascript.library
Github repository
eleninjaytech@gmail.com

관련링크

- jQuery 버전 체크박스 링크

'javascript' 카테고리의 다른 글

[javascript] 엔티티 코드 변환 / entity mapping escape / 특수 문자를 엔티티 코드로 치환  (0) 2023.02.07
[jQuery] 변수 바인딩, SQL의 쿼리 바인딩(Query Binding) 처럼 사용하기 | Variable Query Binding  (0) 2022.07.07
[jQuery] 엔티티 코드 변환 / entity mapping escape  (0) 2022.07.07
[javascript] 변수 바인딩, 문자열 문자에 변수 넣기, 템플릿 리터럴 / Template literals (Template strings), Variable Binding  (0) 2022.07.07
[jQuery] 체크박스 전체 선택 및 해제 / How to check all checkboxes using jQuery  (0) 2022.01.23
    'javascript' 카테고리의 다른 글
    • [jQuery] 변수 바인딩, SQL의 쿼리 바인딩(Query Binding) 처럼 사용하기 | Variable Query Binding
    • [jQuery] 엔티티 코드 변환 / entity mapping escape
    • [javascript] 변수 바인딩, 문자열 문자에 변수 넣기, 템플릿 리터럴 / Template literals (Template strings), Variable Binding
    • [jQuery] 체크박스 전체 선택 및 해제 / How to check all checkboxes using jQuery
    코가이
    코가이
    개발 기록 장치

    티스토리툴바