2012-10-19 2 views
2

내 페이지의 컨텍스트 메뉴를 비활성화하고 싶습니다. 하지만 텍스트 상자에서는 시스템 컨텍스트 메뉴를 사용할 수 있어야합니다.컨텍스트 메뉴를 비활성화하고 텍스트 상자를 비활성화하십시오.

내가 그런 식으로 자바 스크립트와 함께하고 있어요 :

document.oncontextmenu = function (e) { 
    return false; 
}; 

내가 좋아하는 뭔가에 대해 생각 :

document.oncontextmenu = function (e) { 
    if (e.taget.nodeName != "text") { 
    return false; 
    } 
}; 

그러나 여기서 nodeName은 매번 DIV이다. 이에 내가 글 상자에있는 jqGrid이 DIV.

<div id="divGrdPos" style="padding:3px,0px,3px,0px;"> 
    <table id="JQGridCart" class="grdCart"></table> 
</div> 

누군가가 나를 도울 수 있습니까? 그것은 fo를 작동

document.addEventListener('contextmenu', function (event) { 
    if (event.target.nodeName !== 'INPUT' && event.target.type !== 'text' && event.target.nodeName !== 'TEXTAREA') { 
     event.preventDefault(); 
    } 
}); 

: 당신이 text 텍스트 상자 nodeName에 대해 확인하는 이유는

들으 Senni

답변

0

은 당신이 좋아하는 뭔가가 필요 INPUT

document.oncontextmenu = function (e) { 
    console.log(e); 
    if (e.target.nodeName != "INPUT") { 
     return false; 
    } 
};​ 

http://jsfiddle.net/qr3fu/

+0

또한 DIV를 입력하기 때문에 입력이 없어도 작동하지 않습니다. 입력 필드는 JQGrid의 다른 많은 컨트롤과 함께이 DIV에 있습니다. 그래서이 입력 필드를 클릭했는지 확인할 수 없습니다. – Senni

+0

@Senni 내 피들의 입력 필드도 div에 있습니다. 조사 할 수 있도록 라이브 데모를 설정할 수 있습니까? – Musa

+0

미안하지만 JQGrid를로드 할 수 없기 때문에 불가능합니다. 이 JQGrid 내부의 입력 필드입니다. – Senni

0

나는 실수를 발견했다. 내 코드에서 내 이벤트가 내 표에 있고이 이벤트가 oncontextmenu() 이벤트 전에 발생합니다. 내 mousedown()은 오른쪽 클릭을 확인한 후 이라는 div로 내 자신의 컨텍스트 메뉴를 greating하고 있습니다.

따라서 nodeName"input" 일 경우 내 mousedown() 이벤트를 확인하고 결과를 처리합니다.

oncontextmenu()은 동일합니다.

thx.

관련 문제