input 태그의 type이 checkbox이고 여러 개 있을 경우 카테고리 중 하나만 선택이 되어야 할 때가 있다. 자바스크립트를 통해 해결할 수 있다.
⭐ 주요 포인트
onclick 시 모든 체크바스를 해제하고 선택 한 체크박스 만 체크되도록 한다.
구현 방법
- 하나로 묶을 checkbox는 동일한 name 값을 설정한다.
- checkOnlyOne(this) : 체크박스를 하나만 선택하도록 하는 함수입니다. 이 함수는 체크박스가 클릭되었을 때 호출된다.
- const checkboxes = document.getElementsByName("cate") : name 속성이 "cate"인 모든 체크박스를 가져와서 변수 checkboxes에 할당한다.
- checkboxes.forEach((cb) => { cb.checked = false; }) ****: forEach() 함수를 활용해 모든 체크박스를 순회하여 checked 속성을 false로 설정하여 모든 체크박스를 선택 해제한다.
- element.checked = true : checkOnlyOne함수로 받은 element ( = 클릭 된 체크박스 )만 다시 선택되도록 해당 체크박스의 checked 속성을 true로 설정한다.
Html
<div class="category_area">
<ul class="flex_line">
<li class="flex_line">
<input
type="checkbox"
name="cate"
id="all"
value="all"
onclick="checkOnlyOne(this)"
checked
/>
<label for="all">전체</label>
</li>
<li class="flex_line">
<input
type="checkbox"
name="cate"
id="coffee"
value="coffee"
onclick="checkOnlyOne(this)"
/>
<label for="coffee">커피</label>
</li>
<li class="flex_line">
<input
type="checkbox"
name="cate"
id="juice"
value="juice"
onclick="checkOnlyOne(this)"
/>
<label for="juice">주스</label>
</li>
<li class="flex_line">
<input
type="checkbox"
name="cate"
id="coke"
value="coke"
onclick="checkOnlyOne(this)"
/>
<label for="coke">콜라</label>
</li>
</ul>
</div>
Javascript
function checkOnlyOne(element) {
const checkboxes = document.getElementsByName("cate");
checkboxes.forEach((cb) => {
cb.checked = false;
});
element.checked = true;
}
See the Pen checkOnlyOne by pminsun (@pminsun) on CodePen.
'Javascript' 카테고리의 다른 글
문서의 로딩되는 시점 이벤트 제어하기 (0) | 2024.08.27 |
---|---|
배열 reduce() 사용법 및 예제 (0) | 2024.08.26 |
AOS 라이브러리 (0) | 2024.08.26 |
select custom (0) | 2024.08.26 |
map(), filter(), find() (0) | 2024.08.25 |