【问题标题】:Preventing html ENTER event without disabling keypress在不禁用按键的情况下防止 html ENTER 事件
【发布时间】:2021-05-12 10:05:48
【问题描述】:

我正在使用<tr contenteditable="true"> 为单元格构建一个电子表格网站。

我已经实现了一个onkeyup 函数,当专注于一个单元格时按下enter 会将焦点转移到正下方的下一个单元格,但问题是默认情况下按下enter 还会添加一个带有@987654327 的换行符@ 元素,导致在移动到下一个单元格之前创建一个空行。

两者同时开火,所以我没有机会取消按键而不破坏我的功能。我发现的所有解决方案都涉及在专注于元素时完全禁用 enter 键,但这在这里不起作用,因为我的功能依赖于能够在专注于元素时按下 enter。

我只需要 tr 不插入 <br> 在输入时,我不需要禁用我的输入键。

【问题讨论】:

  • 在 keydown 函数开始时,您是否尝试过执行 e.preventDefault()?
  • 是的,但这会禁用文本输入,阻止我在单元格中输入任何内容。但是,skipRow() 函数仍然有效。
  • 不要对所有键都禁用它,在做preventDefault之前检查键是否输入
  • 感谢工作!还必须确保我正在执行 onkeypress/down 而不是 onkeyup。

标签: javascript html html-table element onkeypress


【解决方案1】:

enter 事件上添加e.preventDefault() 解决了这个问题。确保只将其放在enter 键上,而不是所有按键上,否则您将禁用单元格的文本输入,从而使您无法编辑它们,并确保使用onkeypress/onkeydown 而不是onkeyup

非常感谢 cmets 中的@Robin Clower 和 @Zac。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 2017-04-08
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多