JavaScript | jQuery/Table
[Javascript] Checkbox 하나만 선택되게 하기
은정재
2022. 5. 25. 11:35
- 일반적으로 Table에서 하나만 선택되도록 구현하려면 Radio 버튼을 주로 사용한다. 하지만, 기획 또는 UI 등의 이유로 불가피하게 Checkbox를 사용하여 하나만 선택되는 기능을 구현하는 경우에 대해 그 방법을 기술한다.
1. forEach 문법 사용
function checkBoxSelect(element) {
const checkboxes = document.getElementsByName("test");
checkboxes.forEach((cb) => {
cb.checked = false;
})
element.checked = true;
}
<table>
<tr>
<td><input type="checkbox" name="test" onClick="checkBoxSelect(this)"></td>
</tr>
<tr>
<td><input type="checkbox" name="test" onClick="checkBoxSelect(this)"></td>
</tr>
<tr>
<td><input type="checkbox" name="test" onClick="checkBoxSelect(this)"></td>
</tr>
</table>
1) 크롬 / Edge : 정상 동작 > Checkbox 하나만 선택됨
2) IE 11 : 비정상 동작 > Checkbox 중복 선택됨
- forEach 문법은 IE 11에서 정상적으로 동작하지 않는다는 글이 대다수였고, 방법이 있다면 개인적으로 찾아보길 권장한다.
: 크로스 브라우징을 고려한다면, 아래 방법을 추천한다.
2. for 문법 사용
function checkBoxSelect(element) {
var obj = document.getElementsByName("test");
for (var i = 0; i < obj.length; i++) {
if (obj[i] != element) {
obj[i].checked = false;
}
}
}
<table>
<tr>
<td><input type="checkbox" name="test" onClick="checkBoxSelect(this)"></td>
</tr>
<tr>
<td><input type="checkbox" name="test" onClick="checkBoxSelect(this)"></td>
</tr>
<tr>
<td><input type="checkbox" name="test" onClick="checkBoxSelect(this)"></td>
</tr>
</table>
1) 크롬 / Edge : 정상 동작 > Checkbox 하나만 선택됨
2) IE 11 : 정상 동작 > Checkbox 하나만 선택됨
* 참고사항 : 기타 브라우저(Safari, FireFox 등)에 대한 테스트는 별도로 하지 않음