체크박스를 드래그로 선택하고 싶습니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
체크박스를 드래그로 선택하고 싶습니다.

QA

체크박스를 드래그로 선택하고 싶습니다.

본문

일반적인 구글에서 찾은 소스는 대입을 하니...

체크박스 드래그가 불가능 하네요..ㅠㅠ

그누보드 용으로 가공으로 해야 할 거 같은데...

능력 밖이라서 질문 드립니다...

이 질문에 댓글 쓰기 :

답변 3

출처에서 약간 응용했어요~

전 잘 되던데

어떻게 될지 모르겠네여~

 

 

*css 


.focus {position:fixed; border:1px solid red; background-color:rgb(128, 0, 0, 0.3);}

 

*html


<div class="col-xs-12">
          <input type="checkbox" name="a1" value="">
          <input type="checkbox" name="a2" value="">
          <input type="checkbox" name="a3" value="">
          <input type="checkbox" name="a4" value="">
          <input type="checkbox" name="a5" value="">
          <input type="checkbox" name="a6" value="">
        </div>
<div class="focus"></div>

 

 

*script


$(function(){
  var target = 'input[type=checkbox]'; //셀렉트로 묶을 객체
  var mode = false;
  var startX = 0;
  var startY = 0;
  var left, top, width, height;
  var $focus = $(".focus");
  $(document).on("mousedown", function(e) {
    mode = true;
    startX = e.clientX;
    startY = e.clientY;
    width = height = 0;
    $focus.show();
    rangeSelect(target, 0, 0, 0, 0, function() { //기존에 선택된 객체를 선택취소한다.
    $(this).removeAttr("checked","");
    });
  }).on('mouseup', function(e) {
    mode = false;
    $focus.hide();
    $focus.css("width", 0);
    $focus.css('height', 0);
    //범위 내 객체를 선택한다.
    rangeSelect(target, left, top, left + width, top + height, function(include) {
    if(include){
      console.log($(this));
      $(this).attr("checked","checked");
    }else{
      $(this).removeAttr("checked","");
      }
    });
  }).on('mousemove', function(e) {
    if(!mode) {
    return;
    }
    var x = e.clientX;
    var y = e.clientY;
    //마우스 이동에 따라 선택 영역을 리사이징 한다
    width = Math.max(x - startX, startX - x);
    left = Math.min(startX, x);
    $focus.css('left', left);
    $focus.css("width", width);
    height = Math.max(y - startY, startY - y);
    top = Math.min(startY, y);
    $focus.css('top', top);
    $focus.css('height', height);
  });
  function rangeSelect(selector, x1, y1, x2, y2, cb) {
    $(selector).each(function() {
    var $this = $(this);
    var offset = $this.offset();
    var x = offset.left;
    var y = offset.top;
    var w = $this.width();
    var h = $this.height();
    //범위 안인지 체크
    cb.call(this, x >= x1 && y >= y1 && x + w <= x2 && y + h <= y2);
    });
  }
});

 

 

 

출처 : https://sub0709.tistory.com/64

능력이 부족하여 실패하였네요...
-----
<?php if ($is_checkbox) { ?>
<div class="wr-chk">
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id
----
이 부분이 수정을 어떻게 해야 할지 몰라서...
name = "a1" 이건 안먹히고 위와 같은 형식이라..이리 저리 해도 불가하네요.ㅠㅠ

질문이 너무 추상적입니다.

님이 찾아본 소스나  비슷한 기능을 하는 사이트를 찾아보시는게 상호 이해가 빠르겠네요

 

사각형을 그리고 그 안에 들어가는 체크 박스를 다 선택하고 싶으신건가요?

아니면 사각형 없이 그냥 체크 한상태로 죽 내리면 선택되게 하고 싶으신건가요?

 

전자보단 후자가 쉽겠죠

수정이 안되네요...


<form name="dragchkform" method="get"> 
<input type="checkbox" name="dragchk"> 체크박스 1<br> 
<input type="checkbox" name="dragchk"> 체크박스 2<br> 
<input type="checkbox" name="dragchk"> 체크박스 3<br> 
<input type="checkbox" name="dragchk"> 체크박스 4<br> 
<input type="checkbox" name="dragchk"> 체크박스 5<br> 
<input type="checkbox" name="dragchk"> 체크박스 6<br> 
<input type="checkbox" name="dragchk"> 체크박스 7<br> 
<input type="checkbox" name="dragchk"> 체크박스 8<br> 
<input type="checkbox" name="dragchk"> 체크박스 9<br> 
<input type="checkbox" name="dragchk"> 체크박스 10<br> 
</form> 
<script language="javascript"> 
var dragchkstat = "off"; 
function dragchkNOOP() { return false; } 
function dragchkOnMouseDown() { 
        if (this.checked) { 
                dragchkstat = "uncheck"; this.checked = false; 
        } else { 
                dragchkstat = "check"; this.checked = true; 
        } 
        return false; 
} 
function dragchkOnMouseOver() { 
        switch (dragchkstat) { 
                case "off": 
                        break; 
                case "check": 
                        this.focus(); this.checked = true; break; 
                case "uncheck": 
                        this.focus(); this.checked = false; break; 
        } 
        return false; 
} 
function dragchkOnMouseUp() { dragchkstat = "off"; return true; } 
for (i = 0; i < document.dragchkform.dragchk.length; i++) { 
        document.dragchkform.dragchk[i].onclick = dragchkNOOP; 
        document.dragchkform.dragchk[i].onmousedown = dragchkOnMouseDown; 
        document.dragchkform.dragchk[i].onmouseover = dragchkOnMouseOver; 
        document.onmouseup = dragchkOnMouseUp; 
} 
</script>

이 소스처럼 하고 싶어서 말이죠...
마우스로 체크박스를 드래그 하면 되는 방식이요..
저의 소스는
--
<li class="list-item<?php echo $li_css;?>">
<?php if ($is_checkbox) { ?>
<div class="wr-chk">
<input type="checkbox" name="chk_wr_id[]" value="<?php echo $list[$i]['wr_id'] ?>" id="chk_wr_id_<?php echo $i ?>">

--
위의 체크박스 부분을 수정하면 될 듯 한데 안돼네요...
아미나 플랫폼 입니다.

아 상관없어요 체크박스는
스크립트가 적용되는 모든 페이지의 체크박스를 전부 적용하게 해놓아서
체크박스는 솔직히 따로 만들지 않으셔도 됩니다.

다만

html 부분 중 가장 하단에 있던
<div class="focus"></div>

css
.focus {position:fixed; border:1px solid red; background-color:rgb(128, 0, 0, 0.3);}

이 두 부분은 반드시 필요하니

체크 박스가 있는 페이지 하단에 넣어주시고

스크립트만 적용해주시면 됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT