重新定义输入的上下文菜单不起作用。
在每个内部的表格中都有table-cell
一个disabled
input
- 元素(文本或复选框)。table-row
在块上设置了一个事件oncontextmenu
。该菜单应该激活用于编辑、保存和停用的输入。不幸的是,仅当单击发生table-cell
在输入开始之前(在 内padding
)时才重新定义菜单,并且如果单击输入,则其上的设置event.preventDefault()
不起作用,并且用于编辑输入的标准浏览器菜单出现。
如何绕过它?我希望用户只需单击表格的行,该行将在悬停时突出显示,而不是寻找自定义菜单可以工作的区域。
这是一个示例:它适用于块,但不适用于输入。
div {
background: gray;
padding: 8px;
width: 32px;
text-align: center;
}
Right click on input and div:<br>
<input type="text" value="input" disabled oncontextmenu="event.preventDefault();alert(event.x)">
<hr>
<div oncontextmenu="event.preventDefault();alert(event.x)">div</div>
[更新] 不适用于disabled
输入。工作在活跃
带有事件的元素
disabled
会忽略对其触发的事件。但是,它们可以将事件向上传递到 DOM 树(并非在所有浏览器中),因此事件处理程序可以放置在父元素上。在这里,完整的 Firefox。将忽略所有已经发生的事件,并且不会考虑将它们传递到任何地方。在这种情况下,有 2 个选项:
readonly
而不是disabled
第一个选项
第二个选项
知道了!事实证明
disabled
,鼠标事件对元素不起作用,同时它们也不会到达父级。如果你写在 stylesinput[disabled] { pointer-events: none; }
,那么事件将到达父元素,它可以被重新定义,一切都会工作。