4

keypress在分配给 body 元素的网页上有一个处理程序。我真的希望它在网页的任何地方都处于活动状态。或者我是这么想的。文本输入表单中的keypress事件也会激活正文处理程序,这是有道理的,但我不想要。

理想情况下,我想保留keypress分配给 body 元素的处理程序,并以某种方式仅排除输入表单。有什么办法可以在输入级别停止事件并防止它传播到正文?(或者这甚至是查看 HTML DOM 事件的正确方法吗?)

4

1 回答 1

9

在您的按键处理程序中检查哪个元素触发了事件并过滤掉输入元素会更容易:

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;
    if ( !/INPUT|TEXTAREA|SELECT|BUTTON/.test(target.nodeName) ) {
        // Do stuff
    }
};
于 2009-10-25T16:53:27.510 回答