禁用上下文菜单但不在文本框中禁用

Sen*_*nni 3 javascript contextmenu jqgrid dom-events

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

我用 Javascript 来做这样的事情:

document.oncontextmenu = function (e) {
    return false;
};
Run Code Online (Sandbox Code Playgroud)

我想到了类似的事情:

document.oncontextmenu = function (e) {
    if (e.taget.nodeName != "text") {
    return false;
    }
};
Run Code Online (Sandbox Code Playgroud)

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

<div id="divGrdPos" style="padding:3px,0px,3px,0px;">
    <table id="JQGridCart" class="grdCart"></table>
</div>
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

mic*_*nic 5

你需要类似的东西:

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

它将适用于输入(type =“text”)和文本区域。

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