将表格字段从分配给主体的按键处理程序中排除。

问题描述 投票:3回答:1

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

理想的情况是,我希望保留这个 keypress 处理程序分配给body元素,并以某种方式排除输入表单。 有什么方法可以让事件停止在输入层,并防止它传播到body? (或者说这是看待HTML DOM事件的正确方式吗?)

javascript dom-events keypress onkeypress event-propagation
1个回答
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
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.