Предотвращение события html ENTER без отключения нажатия клавиши

Я создаю сайт электронных таблиц, используя <tr contenteditable="true"> для ячеек.

Я реализовал функцию onkeyup, в которой нажатие enter при фокусировке на ячейке смещает фокус на следующую ячейку непосредственно ниже, но проблема в том, что нажатие enter по умолчанию также добавляет разрыв строки с элементами contenteditable, в результате чего перед этим создается пустая строка. переход на следующую ячейку.

введите здесь описание изображения

Оба срабатывают одновременно, поэтому у меня нет возможности отменить нажатие клавиши, не нарушив при этом свою функцию. Все решения, которые я нашел, включают полное отключение клавиши ввода при фокусировке на элементе, но здесь это не сработает, поскольку моя функция зависит от возможности нажатия клавиши ввода при фокусировке на элементе.

Все, что мне нужно, это чтобы tr не вставляла <br> при вводе, мне не нужно отключать клавишу ввода.


person Michael Moreno    schedule 08.02.2021    source источник
comment
В начале функции keydown вы пытались выполнить e.preventDefault()?   -  person Robin Clower    schedule 08.02.2021
comment
Да, но это отключает ввод текста, не позволяя мне вводить что-либо в ячейки. Однако функция skipRow() по-прежнему работает.   -  person Michael Moreno    schedule 08.02.2021
comment
не отключайте его для всех ключей, проверьте, введен ли ключ, прежде чем выполнять preventDefault   -  person Zac    schedule 08.02.2021
comment
Спасибо сработало! Просто нужно было также убедиться, что я делаю onkeypress/down вместо onkeyup.   -  person Michael Moreno    schedule 08.02.2021


Ответы (1)


Добавление e.preventDefault() к enter событиям решило проблему. Убедитесь, что вы поместили его только на клавишу enter, а не на все нажатия клавиш, иначе вы отключите ввод текста для ячеек, не позволяя вам редактировать их, и обязательно используйте onkeypress/onkeydown, а не onkeyup.

Большое спасибо @Robin Clower и @Zac в комментариях.

person Michael Moreno    schedule 08.02.2021