반응형
HTML
<tbody>
<tr>
<td> 정책의 이해</td>
<td>
<input type="checkbox" name="line1" id="check1" value="[6/29 정책의 이해]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line1" id="check2" value="[8/24 정책의 이해]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
</tr>
<tr>
<td> 설치기술 실무</td>
<td>
<input type="checkbox" name="line2" id="check1" value="[6/29 설치기술 실무]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line2" id="check2" value="[8/24 설치기술 실무]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
</tr>
<tr>
<td>인증제도의 이해 </td>
<td>
<input type="checkbox" name="line3" id="check1" value="[6/29 인증제도의 이해]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line3" id="check2" value="[8/24 인증제도의 이해]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
</tr>
<tr>
<td> 적용방법 ①</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line4" id="check1" value="[6/30 적용방법 ①]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line4" id="check2" value="[8/25 적용방법 ①]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
</tr>
<tr>
<td> 평가항목별 적용방법 ②</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line5" id="check1" value="[6/30 평가항목별 적용방법 ②]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
<td class="bg-gray"></td>
<td>
<input type="checkbox" name="line5" id="check2" value="[8/25 평가항목별 적용방법 ②]" onclick="handleCheckboxClick(this)">
<label for="check1"></label>
</td>
</tr>
</tbody>
Javascript
//이준호 작성
//체크 박스 중복 체크 방지 코드
function handleCheckboxClick(checkbox) {
const checkboxes_names = document.getElementsByName(checkbox.name);
const checkboxes = document.querySelectorAll('input[type="checkbox"]');
// 클릭된 항목 담는 배열 변수
const checkedValues = [];
checkboxes.forEach(function(checkbox) {
// 각 체크박스 요소에 대한 처리
if (checkbox.checked) {
if (checkedValues.length > 0 && checkedValues[0] !== checkbox.id) {
alert('알림: 동일한 기수 과목인지 확인하세요 !');
checkbox.checked =false;
}else{
checkedValues.push(checkbox.id);
}
}
});
checkboxes_names.forEach(function(cb) {
if (cb!== checkbox) {
cb.checked = false;
}
});
}
행과 열을 input 태그 값으로 구분 하였습니다 .
같은 행은 동일한 name 값을 줘 구분을 하였고
열을 동일한 id 값을 주었습니다.
그래서 동일한 기수 수업 내용만 checkbox가 클릭되도록 코딩하였습니다.
첫 수업을 3기 수업의 checkbox를 클릭했으면 두번째 체크 박스도 3기 수업이어야 합니다.
반응형
'Web Dev > Javascript' 카테고리의 다른 글
Javascript 첨부파일 용량 제한하는 방법 쉽습니다 feat JQuery (0) | 2023.06.21 |
---|---|
Javascript : 웹페이지 원하는 위치에 애니메이션 focus 주는 방법 feat JQuery 방법 (0) | 2023.06.12 |
Javascript 문법 - 구조분해할당(Destructing) (0) | 2023.05.24 |
JavaScript 자바스크립트의 관대함 this, argument (0) | 2023.03.23 |
JS Rest 파라미터 사용 방법 간단한 예제로 알려드립니다 (0) | 2023.03.21 |
Javascripte웹 백엔드 학습 No.1 : Token 만드는 코드 -> Farcade Pattern (0) | 2023.03.02 |