일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Log
- 아이비시트
- Git
- naver smartEditor
- ibsheet
- AWS Athena
- 자바스크립트
- AWS Glue
- 환경 구성
- 로그 데이터
- athena
- Java
- intellij
- java8
- 자바
- AWS SQS
- aws S3
- #jQuery
- aws lambda
- db
- 카이호스트만
- Study
- s3
- 인텔리J
- function
- jQuery
- 환경구성
- 자바8
- AWS
- JavaScript
- Today
- Total
애매한 잡학사전
jQuery를 이용한 행추가, 행삭제, 행초기화 구현하기 본문
요즘은 그리드 툴이 많아서 직접 행추가, 삭제, 초기화 등 기능을 직접 구현할 일이 별로 없는데 그래도 직접 만들어 보았습니다.
다른 페이지에서도 사용할 수 있도록 하기 위해 나름 생각을 해서 구현하였습니다.
기본 테이블 구조는 아래와 같고 각각의 기능을 FUNCTION 으로 만들었습니다.
- 기본 테이블 구조
<input type="button" id="" name="">행추가</input>
<input type="button" id="" name="">행삭제</input>
<table>
<tr>
<th><input type="checkbox" id="" name=""/></th>
<th>헤더1</th>
<th>헤더2</th>
<th>헤더3</th>
</tr>
<tr>
<td><input type="checkbox" id="" name=""/><td>
<td>내용1</td>
<td>내용2</td>
<td>내용3</td>
</tr>
</table>
테이블 구조는 정확하게 생각이 나지 않아서 대충 구조만 참고하시면 될 것 같습니다.
- 행초기화 function
fncRowReset = function(obj){
$(obj).find(':input').each(function(){
this.value = '';
this.checked = '';
});
};
초기화 할 행 Object를 받아서 input 의 값을 비워주고 checkbox 일 경우 체크를 해제합니다.
- 행추가 function
fncAddRow = function(obj){
var varTable = $(obj).parent().find('>table'); // 행추가 table
var varTableLastRow = varTable.find('tr:last'); // 행추가 마지막 row
var copyRow = varTableLastRow.clone(true); // 행추가 마지막 row 복사
// 행추가 row 값 초기화
fncRowReset(copyRow);
// 행추가 맨 마지막에 append
varTable.append(copyRow);
};
행추가 버튼을 object로 받아 그 위치를 기준으로 추가할 table을 찾고 그 table의 마지막 row를 복사해서 그 아래에 추가합니다.
- 행삭제 function
fncDeleteRow = function(obj){
var varTable = $(obj).parent().find('>table'); // 행삭제 table
var trCount = varTable.find('>tbody >tr').size(); // 행삭제 body row count
if(trCount == 1){
alert('더이상 삭제할 수 없습니다.');
return;
}
if(confirm("선택하신 항목을 삭제하시겠습니까?")){
var chkCnt = 0;
varTable.find('>tbody input:checkbox').each(function(idx){
if(this.checked){
var nowRowSize = varTable.find('>tbody >tr').size();
var choiceRow = $(this).parent().parent();
if(nowRowSize == 1){
// 마지막 row 값 초기화
fncRowReset(choiceRow);
} else {
// 행삭제
choiceRow.remove();
}
chkCnt++;
}
});
if(chkCnt == 0){
alert('선택된 항목이 없습니다.');
return;
}
}
var newTrCnt = varTable.find('>tbody >tr').size();
// 행삭제 tr id 초기화 (순서대로)
for(var i = 0; i < newTrCnt; i++){
varTable.find('>tbody >tr:eq('+i+')').attr('id', i);
}
};
행삭제 버튼을 Object로 받아 그 위치를 기준으로 table의 선택한 row를 삭제합니다.
row가 1개일 경우에는 삭제가 불가능하게 막습니다.
- 행 전체선택 / 해제 function
fncCheckAll = function(obj){
var chkAll = $(obj);
var varTable = chkAll.parent().parent().parent().parent();
var chkYn = obj.checked;
varTable.find('>tbody input:checkbox').each(function(idx){
this.checked = chkYn;
});
};
전체 선택 checkbox를 선택하면 table의 checkbox를 선택 / 해제 합니다.
이렇게 직접 구현할 일은 없을 것 같지만 그래도 남겨놓으면 쓸때가 있을 것 같아서 블로그에 남겨둡니다.
'DEV > jQuery' 카테고리의 다른 글
자바스크립트 페이징 처리 with jQuery (2) | 2020.11.12 |
---|---|
제이쿼리를 이용해서 입력항목의 필수 값 체크하기 (0) | 2017.09.11 |