2013-05-15 4 views
-1

페이지가 다시 게시 될 때 또는 다른 것이 진행될 때 사용자가 동일한 버튼을 여러 번 클릭 할 수 없도록 전체 페이지 상단에 큰 회색 div가 표시됩니다. 이것은 99 %의 시간 동안 정상적으로 작동하고 다른 1 %는 사용자가 div에서 스크롤/줌할 수있는 특정 모바일 장치에 있습니다.누구나 사용자가 아무 것도 클릭하지 못하도록 막는 더 좋은 방법을 생각할 수 있습니까?

올바르게 작동하도록 CSS를 완벽하게 만들지 않고 (새로운 장치와 함께 진행되는 전투가 될 것입니다.) 사용자를 막을 수 없도록 막기로 결정했습니다. $('a').click(function(e){e.preventDefault();});과 같은 것은 사람들이 앵커 태그를 클릭하여 링크로 이동하는 것을 막지 만 발사에서 링크의 onclick 이벤트를 중지하지는 않습니다.

페이지를 원래 상태로 다시 변경해야하므로 페이지를 너무 급격하게 변경하지 않도록하십시오 (모든 onclick 속성 제거와 같은). onclick 이벤트가 실행되기 전에 클릭을 가로 채고 싶습니다만 이것이 가능하다고 생각하지 않습니다. 대신 마우스로 클릭 한 요소를 숨기고 문서의 mouseup에 표시하면 클릭 이벤트 발생을 중지하지만 아주 잘 보이지 않습니다. 누구든지 더 나은 해결책을 생각할 수 있습니까? 그렇지 않으면 모든 장치/브라우저에서 작동합니까?

var catchClickHandler = function(){ 
    var $this = $(this); 
    $this.attr('data-orig-display', $this.css('display')); 
    $this.css({display:'none'}); 
}; 
var resetClickedElems = function(){ 
    $('[data-orig-display]').each(function(){ 
     $(this).css({display:$(this).attr('data-orig-display')}).removeAttr('data-orig-display'); 
    }); 
}; 

$('#btn').click(function(){ 
    $('a,input').on('mousedown',catchClickHandler); 
    $(document).on('mouseup', resetClickedElems); 
    setTimeout(function(){ 
     $('a,input').off('mousedown',catchClickHandler); 
     $(document).off('mouseup', resetClickedElems); 
    }, 5000); 
}); 

JSFiddle : http://jsfiddle.net/d4wzK/2/

+0

, 내가 비활성화 클릭 버튼을 클릭 한 다음 날 텍스트 상자를 입력 할 수 있습니다 10 배 이상 같은 텍스트 상자를 클릭합니다. – user1048676

+0

버튼을 비활성화하지 않으시겠습니까? 페이지의 모든 클릭을 삭제하려고하는 이유는 무엇입니까? –

+0

5 초 후에 다시 클릭이 가능합니다. – JoeS

답변

1

당신은 앵커 태그의 모든 작업 방지하기 위해이 같은 작업을 수행 할 수 있습니다

jQuery('#btn').click(function(){ 
    jQuery('a').each(function() { 
     jQuery(this).attr('stopClick', jQuery(this).attr('onclick')) 
      .removeAttr('onclick') 
      .click(function(e) { 
       e.preventDefault(); 
      }); 
    }); 
}); 

을 그 나중에 되돌리려면 onclick의 이름을 stopclick으로 변경하고 hr을 따르는 기본 동작도 중지합니다. ef.

0
document.addListener('click',function(e){e.preventDefault()}) 

Modified-

그것의 당신이 당신의 작업과 달성을 완료 한 후 문서에서 클릭 이벤트를 제거 할 의무.

예 -

참고
function prevent(e){ 
    e.preventDefault() 
} 
//add 
document.addListener('click',prevent) 

//remove 
document.removeListener('click',prevent) 
+0

onclick 이벤트가 끝나면 이벤트가 튀어 나오기 때문에 – JoeS

+0

수정 된 버전을 확인하십시오! – spaceman12

관련 문제