我有一个奇怪的问题,我在div元素中有一些输入元素。div元素附加了一个事件处理程序来捕获left和right键。div元素也有一个tabIndex。
我所希望的是,当div元素被聚焦时,我可以捕捉到向左和向右的键。如果按下了left和right键,我就会取消该事件(停止气泡并防止默认)。
但是现在左右键在input元素中不起作用,取而代之的是div元素处理按键并取消事件。
这是正常行为吗?如果是这样,我能做些什么呢?
谢谢,
AJ
发布于 2011-08-02 19:45:51
这是一个事件冒泡的问题。
我不知道你的目标浏览器是什么,但问题是:在某些情况下,事件是首先从外部div捕获的,而在其他情况下,它是首先从内部div捕获的。标准是事件先下降,然后上升。
你需要你的div在冒泡阶段(up)捕获,为此,使用yourdiv.addEventListener('keydown',doSomething,false) (将事件类型更改为您的,可以是keypress或其他)。
Here是一个有用的链接,可以比我更好地解释它。
https://stackoverflow.com/questions/6910934
复制相似问题