2

我想禁用我页面上的上下文菜单,因为我有自己的。但是在文本框中应该可以使用系统上下文菜单。

我正在用这样的Javascript来做:

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

我想到了类似的东西:

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

但是nodeName每次都是一个DIV。在这个 DIV 中,我有一个 JQGrid,文本框在哪里。

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

有人能帮我吗?

4

3 回答 3

4

你需要类似的东西:

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

它适用于输入 (type="text") 和 textareas。

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

于 2012-10-19T07:11:24.620 回答
0

你为什么要检查text文本框nodeNameINPUT

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

http://jsfiddle.net/qr3fu/

于 2012-10-19T07:06:45.923 回答
0

我发现了错误。在我的代码mousedown()中,我的网格上有一个事件,该事件在事件之前触发oncontextmenu()。在检查右键后,我mousedown()正在使用 div 丰富我自己的上下文菜单。

所以我检查了我的mousedown()事件是否nodeName"input"并处理结果。

oncontextmenu()是相同的。

谢谢你的提示。

于 2012-10-19T09:12:20.780 回答