티스토리 뷰
반응형
공정을 체크하는 체크박스를 클릭하면 일어나는 일들을 작업하고 있다.
여러가지 조건들.. 그것들을 만족하는 코드....
1) 코드에서 button을 checkbox를 toggle하도록 코드 수정
$(document).ready(function() {
var values = [];
$('.form-check-input').each(function() {
var val = $(this).val();
if (val && val !== '전체적용' && val !== '' && val !== 'on') {
val = val.replace(/_.*/, '');
if (values.indexOf(val) === -1) {
values.push(val);
}
}
});
if (values.length > 0) {
for (var i = 0; i < values.length; i++) {
var text = values[i] + ' check 전체';
var newButton = $('<button>').addClass('btn btn-outline-success mr-2 mb-2').text(text);
$('.button-container').append(newButton);
newButton.on('click', function(event) {
event.preventDefault();
var value = $(this).text().split(' ')[0];
$('.form-check-input').each(function() {
if ($(this).val().startsWith(value)) {
$(this).prop('checked', function(index, checked) {
return !checked;
});
}
});
const checkboxes = document.querySelectorAll('input[name="checkbox[]"]');
const checkedValues = Array.from(checkboxes).filter(c => c.checked).map(c => c.value);
console.log(checkedValues); // 선택된 체크박스 값 출력
$("#workboard_arrCheck").val(checkedValues);
});
}
}
});
2) 위의 코드에서 'check 전체' 버튼이 들어있는 버튼을 클릭하면 해당 values는 전체 체크가 되고, 한번 더 누르면 해당 values가 전체 체크 해제가 되도록 코드 수정
$(document).ready(function() {
var values = [];
$('.form-check-input').each(function() {
var val = $(this).val();
if (val && val !== '전체적용' && val !== '' && val !== 'on') {
val = val.replace(/_.*/, '');
if (values.indexOf(val) === -1) {
values.push(val);
}
}
});
if (values.length > 0) {
for (var i = 0; i < values.length; i++) {
var text = values[i] + ' check 전체';
var newButton = $('<button>').addClass('btn btn-outline-success mr-2 mb-2').text(text);
$('.button-container').append(newButton);
newButton.on('click', function(event) {
event.preventDefault();
var value = $(this).text().split(' ')[0];
$('.form-check-input').each(function() {
if ($(this).val().startsWith(value)) {
$(this).prop('checked', function(index, checked) {
return !checked;
});
}
});
const checkboxes = document.querySelectorAll('input[name="checkbox[]"]');
const checkedValues = Array.from(checkboxes).filter(c => c.checked).map(c => c.value);
console.log(checkedValues); // 선택된 체크박스 값 출력
$("#workboard_arrCheck").val(checkedValues);
// 해당 value에 속하는 checkbox들이 모두 체크되어 있는지 확인하여 'check 전체' 버튼의 텍스트 변경
var allChecked = true;
$('.form-check-input').each(function() {
if ($(this).val().startsWith(value) && !$(this).prop('checked')) {
allChecked = false;
}
});
if (allChecked) {
$(this).text(value + ' check 전체 해제');
} else {
$(this).text(value + ' check 전체');
}
});
}
}
});
변경된 부분은 다음과 같습니다.
- 24~44번째 줄에서 'check 전체' 버튼을 클릭할 때마다 해당 value에 속하는 checkbox들이 전체 체크 혹은 전체 체크 해제되도록 수정하였습니다. 이전에는 'check 전체' 버튼을 누를 때마다 모든 checkbox가 체크되었는데, 이번에는 해당 value에 속하는 checkbox들만 체크되도록 변경하였습니다.
- 47~56번째 줄에서 'check 전체' 버튼의 텍스트를 변경하는 부분이 추가되었습니다. 해당 value에 속하는 checkbox들이 모두 체크되어 있는지 확인하여 'check 전체' 버튼의 텍스트를 'check 전체 해제'로 변경하거나, 그렇지 않으면 'check 전체'로 변경합니다.
이것이 최종버튼을 클릭하면 토글되고, 반영되는 것을 구현한 코드이다.
$(document).ready(function() {
var values = [];
$('.form-check-input').each(function() {
var val = $(this).val();
if (val && val !== '전체적용' && val !== '' && val !== 'on') {
val = val.replace(/_.*/, '');
if (values.indexOf(val) === -1) {
values.push(val);
}
}
});
if (values.length > 0) {
// '초기화' 버튼 추가
var resetButton = $('<button>').addClass('btn btn-outline-danger mr-2 mb-2').text('초기화');
$('.button-container').append(resetButton);
resetButton.on('click', function(event) {
event.preventDefault();
$('.form-check-input').prop('checked', false);
const checkboxes = document.querySelectorAll('input[name="checkbox[]"]');
const checkboxArray = Array.from(checkboxes);
checkboxArray.forEach((checkbox) => {
const checkedValues = checkboxArray.filter(c => c.checked).map(c => c.value);
$("#workboard_arrCheck").val(checkedValues);
});
});
for (var i = 0; i < values.length; i++) {
var text = values[i] + ' check 전체';
var newButton = $('<button>').addClass('btn btn-outline-success mr-2 mb-2').text(text);
$('.button-container').append(newButton);
newButton.on('click', function(event) {
event.preventDefault();
var value = $(this).text().split(' ')[0];
$('.form-check-input').each(function() {
if ($(this).val().startsWith(value)) {
$(this).prop('checked', !$(this).prop('checked'));
}
});
const checkboxes = document.querySelectorAll('input[name="checkbox[]"]');
const checkboxArray = Array.from(checkboxes);
checkboxArray.forEach((checkbox) => {
const checkedValues = checkboxArray.filter(c => c.checked).map(c => c.value);
$("#workboard_arrCheck").val(checkedValues);
});
});
}
}
});
위의 코드에서는 "초기화" 버튼을 추가하고, 해당 버튼 클릭 시 모든 체크박스를 unchecked 상태로 변경합니다. 또한, 체크박스를 클릭했을 때도 변경된 체크박스 상태를 checkedValues 변수에 저장하여 $("#workboard_arrCheck").val()를 이용해 값이 업데이트되도록 하였습니다.
반응형
'IT tech Coding > javascript' 카테고리의 다른 글
data.push(...sectionData); 자바스크립트 ... 이게 뭐지? (0) | 2023.05.08 |
---|---|
[자바스크립트] 한글 입력 감지 (초성, 중성, 종성 포함) - 화면 출력 코드 (4) | 2023.04.30 |
자바스크립트 오류 : 'Uncaught TypeError: Cannot read properties of undefined' (0) | 2023.04.20 |
트럼프 레이져 기계에서 나오는 pdf를 파싱해서 이미지를 추출할 수 있을까? (도전기 기록) (0) | 2023.04.13 |
[자바스트립트] 특정문구와 붙어있는 텍스트만 추출하고 싶을때 (0) | 2023.04.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- #cx_Freeze
- chatGPT3.5파이썬버전
- 코딩튜토리얼
- #파이썬인스톨러
- 파이썬코드줄바꿈방법
- 프로그래머생활
- sql문장 날짜계산
- 테크에능한여성
- #InstallForge
- 자바스크립트한글입력시반응하도록만드는코드
- 오토핫키에디터창업데이트금지하기
- 코딩효율성
- #InnoSetup
- 카페24가비아phpinfo수정
- #프로그램설치
- #독립실행파일
- 뫄프로그래밍
- 효율적코딩방법
- 스크립트작성기초
- #NSIS
- General error: 2031
- .htaccess수정
- td요소중에 1행과 1열은 제외
- 2분후종료오토핫키
- #파이썬패키징
- 작업공정에 대한 코드작성
- 오토핫키가이드
- #소프트웨어배포
- Bootstrap 5
- 자바스크립트 한글초성
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함