2012-10-19 61 views
2

我想禁用我的頁面上的contextmenu,因爲我有一個。但在文本框中,應該可以使用系統環境菜單。禁用contextmenu但不在文本框中

我用JavaScript做這樣的:

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

我想過是這樣的:

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

但節點名稱是每次一個DIV。 在這個div我有哪裏都是文本框在jqGrid的。

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

有人能幫助我嗎?

THX森妮

回答

4

你需要的東西,如:

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

它將工作FO r輸入(type =「text」)和textareas。

的jsfiddle:http://jsfiddle.net/QjmHy/

0

你爲什麼對text文本框nodeName檢查是INPUT

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

http://jsfiddle.net/qr3fu/

+0

另外,如果我寫輸入它不工作,因爲我得到一個DIV。輸入字段在這個DIV中與來自JQGrid的許多其他控件一起。所以我不能檢查,如果我點擊這個輸入字段... – Senni

+0

@Senni在我的小提琴的輸入字段也在一個div,也許你可以設置一個現場演示,所以我們可以調查它? – Musa

+0

抱歉,這是不可能的,因爲我無法在那裏加載JQGrid。這是JQGrid中的輸入字段... – Senni

0

我發現了錯誤。 在我的代碼中,我的網格上有一個mousedown()事件,此事件在oncontextmenu()事件之前觸發。我的mousedown()正在檢查右鍵單擊後使用div 來激活我自己的上下文菜單。

所以我檢查了我的mousedown()事件,如果nodeName"input"並處理結果。

oncontextmenu()將是相同的。

thx爲您的提示。