"전체" 옵션이 있는 체크박스 로직

bestKimEver·2024년 1월 26일
0

frontEnd

목록 보기
1/3
post-custom-banner
  • jQuery 사용
  • "전체" 체크 시 모든 체크박스 체크
  • "전체"가 체크된 상태에서 체크 해제 시 모든 체크박스 체크 해제
  • "전체"가 체크된 상태에서 다른 체크박스 중 하나라도 체크 해제 시 "전체"도 체크가 해제됨
  • "전체"가 체크되지 않은 상태에서 다른 모든 체크박스가 체크된 상태로 변경될 시 "전체"도 자동으로 체크됨

  • javascript code

    function applyCheckboxGeneralLogic(){
      let isChecked = this.checked;
      let formContainer = $(this).closest(".checkbox-container");
      if($(this).hasClass("checkbox-all")){
        $(formContainer).find("input[type=checkbox]").prop("checked", isChecked)
      }else{
        if(isChecked){
          if($(formContainer).find("input[type=checkbox]:not(.checkbox-all):not(:checked)").length < 1){
            $(formContainer).find("input.checkbox-all").prop("checked", true);
          }
        }else{
          $(formContainer).find("input.checkbox-all").prop("checked", false);
        }
      }
    }
    
    $("div.checkbox-container input[type=checkbox]").click(applyCheckboxGeneralLogic);
  • HTML

    <div class="checkbox-container">
    
      <div class="checkbox-row">
        <input type="checkbox" class="checkbox-all" id="option-all"/>
        <label for="option-all">
          <span>전체</span>
        </label>    
        <input type="checkbox" id="option-01" value="01"/>
        <label for="option-01">
          <span>선택 1</span>
        </label>
        <input type="checkbox" id="option-02" value="02"/>
        <label for="option-02">
          <span>선택 2</span>
        </label>
            <input type="checkbox" id="option-03" value="03"/>
        <label for="option-03">
          <span>선택 3</span>
        </label>
      </div>
      
      <div class="checkbox-row">
        <input type="checkbox" id="option-04" value="04"/>
        <label for="option-04">
          <span>선택 4</span>
        </label>
        <input type="checkbox" id="option-05" value="05"/>
        <label for="option-05">
          <span>선택 5</span>
        </label>
        <input type="checkbox" id="option-06" value="06"/>
        <label for="option-06">
          <span>선택 6</span>
        </label>
        <input type="checkbox" id="option-07" value="07"/>
        <label for="option-07">
          <span>선택 7</span>
        </label>
      </div>
      
    </div>
profile
이제 3년차 개발새발자. 제가 보려고 정리해놓는 글이기 때문에 다소 미흡한 내용이 많습니다.
post-custom-banner

0개의 댓글