Событие всплывает по умолчанию, если вы не используете e.stopPropagation()
:
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>
Теперь, если я правильно вас понял, вы хотите предотвратить поведение по умолчанию для элемента, вызвавшего событие, но не для родительских элементов.
В вашем конкретном случае использования, я думаю, вы хотите сохранить поведение прокрутки стрелок вверх и вниз, но я боюсь, что это невозможно по двум причинам:
Таким образом, вы должны реализовать поведение прокрутки сами (что, на мой взгляд, приведет к странному поведению для большинства пользователей).