【问题标题】:How do I prevent the hotkey ` from being added to a html form input?如何防止热键 ` 被添加到 html 表单输入中?
【发布时间】: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();
        }

此时,我只是在猜测该怎么做。

【问题讨论】:

  • 防止默认

标签: javascript html forms hotkeys


【解决方案1】:

【讨论】:

    【解决方案2】:

    原来还有第二个问题:我需要使用keydown(而不是keyup)。进行该更改后,以下代码(使用preventDefault())可以工作:

    function reset_shortcut_key(e) {
      if(e.keyCode == 192) {
        e.preventDefault();
        reset_data();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2019-07-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 2020-05-11
      相关资源
      最近更新 更多