2016-06-14 5 views
0

I 타입 체크 박스의 입력을 클릭하면 실행하도록되어 기능을 가지고 작동하지 클릭자바 스크립트 Ctrl 키를 ... 파이어 폭스

$.fn.ctrlSelectable = function() { 
    var lastChecked, 
     $boxes = this; 

    $boxes.click(function(evt) { 
     console.log("clicked") 

     if(!lastChecked) { 
      lastChecked = this; 
      return; 
     } 

     if(evt.ctrlKey) { 
      var start = $boxes.index(this), 
       end = $boxes.index(lastChecked); 
      $boxes.slice(Math.min(start, end), Math.max(start, end) + 1) 
       .prop('checked', lastChecked.checked) 
       .trigger('change'); 
     } 

     lastChecked = this; 
    }); 
}; 
$("form").find('input[type="checkbox"]').ctrlSelectable(); 

기능은 IE, 구글에서 작동하고, 아마 다른 사람, Firefox에서는 작동하지 않습니다. Ctrl 키를 누르지 않고 단순히 체크 박스를 클릭하면 console.log("clicked")이 작동하지만 컨트롤을 잡고있을 때는 아무 것도하지 않습니다. 왜 이런 일이 일어날 지 또는 어떻게 해결할 수 있는지에 대한 조언을 누군가가 나에게 줄 수 있습니까?

감사합니다.

+0

어떤 OS에 있습니까? 다른 사람에 대해 모르겠지만 macOS에서 Ctrl + 클릭은 '마우스 클릭'+ 'contextmenu' 이벤트가 발생하지만 클릭은 발생하지 않는 마우스 오른쪽 버튼 클릭입니다. – Kaiido

+0

Windows. 팁을 가져 주셔서 감사합니다. 맥을 사용해야하는 경우를 염두에 두겠습니다. –

+0

여전히 mousedown 이벤트에 핸들러를 연결하여 무언가가 있는지 확인하십시오. – Kaiido

답변

0

많은 후 놀랍게도이 기능에는 아무런 문제가 없다는 것을 알았습니다. Firefox는 레이블 요소에서 대상 입력 필드로의 클릭 이벤트를 전달하지 않습니다 ... 사용자가 보는 체크 박스를 사용하기 때문에 실제 입력 요소는 숨겨지고 레이블은 보이고 확인란을 대상으로합니다.

관련 문제