자바스크립트 체크박스 전체선택, 전체해제 하고 삭제하기

 

HTML

 

1
2
3
4
5
6
7
8
9
<thead>
    <tr>
        <th><input type="checkbox" name="checkAll" id="th_checkAll" onclick="checkAll();"/></th>
    </tr>
</thead>
<tbody>
    <tr>
        <td class="center"><input type="checkbox" name="checkRow" value="${content.IDX}" /></td>
</tbody>
cs

 

thead 에 전체선택/전체해제용 체크박스 'checkAll' 를 만들고 클릭하면 checkAll() 를 타도록 함.

tbody 에는 각 행마다 체크박스 'checkRow' 만들어줌.

 

 

JavaScript

 

1
2
3
4
5
6
7
8
/* 체크박스 전체선택, 전체해제 */
function checkAll(){
      if( $("#th_checkAll").is(':checked') ){
        $("input[name=checkRow]").prop("checked"true);
      }else{
        $("input[name=checkRow]").prop("checked"false);
      }
}
cs

 

thead 에 위치한 전체선택/전체해제용 체크박스를 클릭하면 타는 checkAll() 은 .prop() 를 통해 'checkRow' 이름을 가진 모든 체크박스들을 일괄 제어하는 내용이다.

 

 

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
/* 삭제(체크박스된 것 전부) */
function deleteAction(){
  var checkRow = "";
  $( "input[name='checkRow']:checked" ).each (function (){
    checkRow = checkRow + $(this).val()+"," ;
  });
  checkRow = checkRow.substring(0,checkRow.lastIndexOf( ",")); //맨끝 콤마 지우기
 
  if(checkRow == ''){
    alert("삭제할 대상을 선택하세요.");
    return false;
  }
  console.log("### checkRow => {}"+checkRow);
 
  if(confirm("정보를 삭제 하시겠습니까?")){
      
      //삭제처리 후 다시 불러올 리스트 url      
      var url = document.location.href;
      var page = $("#page").val();
      var saleType = $("#saleType").val();
      var schtype = $("#schtype").val();
      var schval = $("#schval").val();
      location.href="${rc.contextPath}/test_proc.do?idx="+checkRow+"&goUrl="+url+"&page="+page+"&saleType="+saleType+"schtype="+schtype+"schval="+schval;      
  }
}
cs

 

전체선택한 체크박스를 일괄 삭제하기 위해 Spring 프레임워크에 넘길 값을 세팅하는 내용이다.

컨트롤러에는 체크박스 값들을 배열로 넘기거나 하지 않고 문자열들을 콤마로 조합해서 하나의 문자 변수로 보낸다.

예) checkRow = 1, 2, 3, 4

컨트롤러나 서비스단에서 콤마를 구분자로 split 하여 for문 돌려서 쿼리를 돌리는 식으로 처리한다.

 

 

Java

 

1
2
3
4
5
6
//체크박스로 여러개 삭제하는 기능 추가.
String[] arrIdx = paramMap.get("idx").toString().split(",");
for (int i=0; i<arrIdx.length; i++) {
    testMapper.delete(Integer.parseInt(arrIdx[i]));
}
cs

 

split() 을 이용해 콤마를 기준으로 값을 쪼개도록 하고, 그 쪼갠 값들을 배열 arrIdx에 담아 for문을 돌려 일일이 처리 되도록 한다.

 

 

 

+ Recent posts