如何防止热键 ` 被添加到 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 表单输入中?的主要内容,如果未能解决你的问题,请参考以下文章

HTML 表单 - 使用添加 Enter (CR) 后缀的条码扫描器防止表单提交输入

如何防止表单提交在字段上点击输入? [复制]

防止 Access 表单中的整个字段被突出显示

php中如何防止刷新一次提交一次

动态地将输入添加到 HTML 表单 [关闭]

如何防止web攻击