2

如何检查键盘或鼠标事件是否在 div 内完成?

一旦我检查了 div 的 onmousemove() 事件,它就可以工作,但是 onkeyup、onkeypress 等对 div 不起作用。

这是什么原因?

<div onmousemove="alert(1);" onkeypress="alert(2);">

这里将显示 alert(1) 但不显示 alert(2)。

4

2 回答 2

2

看看这个小提琴。您不能在不允许您聚焦和输入的元素上触发键事件...这可能是可能的,contenteditable但我不确定...当您在小提琴的输入中执行按键操作时,div 的 onkeypress正在触发

编辑:我刚刚发现您还可以在 div 上设置 tabindex="0" 并因此使其可聚焦(请参阅更新的新小提琴)然后不需要输入但是当使用 TAB 键通过可聚焦元素时它会干扰

于 2012-04-25T11:18:33.950 回答
1

div 必须有焦点。
这是您的操作方法:

1-标签索引:

// JQ
$("#divID")
    .attr("tabindex", "0")
    .keydown(function(){ /* ... bla bla bla ... */ return false; });

或者

// JS
<div id="divID"
     width="500px"
     height="500px"
     tabindex="1">
</div>

2-将 contentEditable 设置为 true:

$("#divID").attr("contentEditable", "true")

或者

$("#divID")[0].contentEditable = true;

链接:

如何使用 jquery 为 HTML 画布提供键盘焦点?
如何将焦点设置到 HTML5 画布元素?

于 2012-04-25T12:22:36.243 回答