提问者:小点点

如何在元素中的任何位置检测键向上/向下事件?


如果我在textarea中,我可以执行以下操作:

    if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
      e.preventDefault()      return
    }

它在文本区域内进行检测,但我希望它能冒泡到某个父元素。 我怎么能那么做?


共2个答案

匿名用户

只要textarea是大子元素,并且不执行event.stopPropagation(),您就可以将onKeyPress放在div父元素上

<div onKeyPress={e => {console.log("went here", e);}>
<textarea>sample text area</textarea>
</div>

匿名用户

默认情况下,除非您使用e.stopPropagation():

null

document.getElementsByTagName('textarea')[0].addEventListener('keyup', function(e) {
    if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
      e.preventDefault();
      return;
    }
});

document.getElementsByTagName('div')[0].addEventListener('keyup', function(e) {
    console.log('Bubbled');
});
<div>
  <textarea>
  </textarea>
</div>