如何防止热键 ` 被添加到 html 表单输入中?
Posted
技术标签:
【中文标题】如何防止热键 ` 被添加到 html 表单输入中?【英文标题】:How do I prevent the hotkey ` from being added to a html form input? 【发布时间】:2020-12-28 11:12:46 【问题描述】:我因此使用the instructions here 将` 变成了快捷方式:
function reset_shortcut_key(e)
if (e.keyCode == 192) reset_data();
document.addEventListener('keyup', reset_shortcut_key, false);
它成功加载了下一个问题,但是当我在关注<form> <input> </form>
环境时按下此热键时,` 字符会暂时出现(在加载下一个问题之前)。
我想阻止它显示`字符。
问题:如何防止热键`被添加到表单输入中?
其他相关问题是How can I prevent \ from being added from the form input?(但这是关于剥离斜杠)和javascript -> Hotkeys -> Disable for input fields(和here)(但我希望热键起作用)。
编辑:从目前的评论和回答来看,合适的函数是event.preventDefault()
。我仍然不清楚如何实际实现这一点。
在document.addEventListener('keyup', reset_shortcut_key, false);
之前或之后添加它不会做任何事情。除此之外,
document.addEventListener("keyup", function(event)
event.preventDefault();
reset_shortcut_key();
, false);
和
document.querySelector("#input-guess").addEventListener("keyup", function(event)
event.preventDefault();
reset_shortcut_key();
, false);
(其中id="input-guess"
是我的<input>
的名称)都阻止reset_shortcut_key()
被调用。如下修改reset_shortcut_key
不会改变任何东西:
function reset_shortcut_key(e)
e.preventDefault();
if(e.keyCode == 192) reset_data();
此时,我只是在猜测该怎么做。
【问题讨论】:
防止默认 【参考方案1】:你试过吗? https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault
event.preventDefault();
【讨论】:
【参考方案2】:原来还有第二个问题:我需要使用keydown
(而不是keyup
)。进行该更改后,以下代码(使用preventDefault()
)可以工作:
function reset_shortcut_key(e)
if(e.keyCode == 192)
e.preventDefault();
reset_data();
【讨论】:
以上是关于如何防止热键 ` 被添加到 html 表单输入中?的主要内容,如果未能解决你的问题,请参考以下文章