从分配给body的按键处理程序中排除表单字段

时间:2009-10-25 16:39:05

标签: javascript javascript-events keypress onkeypress event-propagation

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

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

1 个答案:

答案 0 :(得分:7)

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

document.onkeypress = function(evt) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;
    if ( !/INPUT|TEXTAREA|SELECT|BUTTON/.test(target.nodeName) ) {
        // Do stuff
    }
};