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

标签 javascript jqgrid dom-events 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>

有人可以帮助我吗?

最佳答案

你需要这样的东西:

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

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

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

关于javascript - 禁用上下文菜单但不在文本框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12968902/

相关文章:

javascript - JqG​​rid 在 'aftersavefunc' 之前触发 'successfunc' 和 'saveRow'

javascript - js : trigger function after a bunch of events were called

javascript - 如何在VANILLA JS中的for循环内等待事件?

javascript - 谷歌可视化查询无法运行最大值和总和查询

javascript - window.location.href 改变时的事件

javascript - 如何在标准/ native JavaScript 函数中设置断点?

javascript - John Resig Micro 模板错误

javascript - 如何根据屏幕分辨率调整jqGrid高度?

jquery - jqgrid resizeStop 不触发

javascript - 如何显示和隐藏元素,使用 JavaScript(不是 jQuery)将值从 JavaScript 传递到 html 元素?