【问题标题】:how can add keyboard shortcut ESC in vuejs or javascript?如何在 vuejs 或 javascript 中添加键盘快捷键 ESC?
【发布时间】:2020-12-26 19:02:00
【问题描述】:

我想在我的 vuejs 应用程序中添加一个键盘,当用户按下键盘上的 ESC 键时,我的一个按钮被选中,例如,我的第一个按钮有 shortKey:1 我该怎么做?

这里是我的 HTML 代码:

<button type="button" class="btn btn-dark" v-for="item in toolSet" 
     :key="item.shortKey">
     <i class="icon-cust" :class="item.icon"></i>
</button>

这里是我的 vuejs 代码:

data() {
    return {
        toolSet: [{
                name: "hand-pointer",
                icon: "far fa-hand-pointer",
                shortKey: 1,
            },
            {
                name: "object-group",
                icon: "far fa-object-group",
                shortKey: 2,
            },
        ],
    };
},

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    我解决了这个问题,经过几个小时我遇到了它,这是解决方案。

    注意:只需在您的项目中添加以下代码,不要做任何其他事情(我的意思是不需要使用@keydown.esc 等):

    mounted() {
            const items = document.querySelectorAll(".btn-dark");
            items[0].classList.add('btn- 
            first-styles')
            document.addEventListener("keydown", e => { 
                 if (e.keyCode == 27) { items[0].classList.add("active_btn"); }
            }); 
            document.addEventListener('click', e => {
                 items[0].classList.remove('active_btn') })
            }
    

    如果你收到类似 e 变量不使用的错误,这个错误是因为 eslint,为了摆脱这个错误,你必须从 package.json 中禁用 eslint

    【讨论】:

      【解决方案2】:

      在 for 循环中,key 属性用于跟踪每个节点的身份以用于响应性目的,因此它与事件处理无关。

      您正在寻找的是将v-on 指令与这样的键盘事件一起使用

      <button type="button" class="btn btn-dark" v-for="item in toolSet" v-on:keyup.esc="doSomething">
        <i class="icon-cust" :class="item.icon"></i>
      </button>
      

      您也可以使用快捷方式@,例如@keyup.esc

      同样从 2.6.0 版本开始,您可以通过以下方式为 v-on 指令动态分配事件名称:

      <a v-on:[eventName]="doSomething"> ... </a>
      

      如果您的版本 > 2.6.0,您可以执行以下操作

      <button 
        type="button" 
        class="btn btn-dark" 
        v-for="item in toolSet" 
        @['keyup.' + item.shortKey]="doSomething"
      >
        <i class="icon-cust" :class="item.icon"></i>
      </button>
      

      以下是一些对您有帮助的文档参考:v-on directiveKey ModifiersDynamic Arguments

      【讨论】:

      • 感谢您的回答,不过,我有一个问题在互联网或 vuejs 文档上找不到,我想在用户按下 ESC 键时在第一个按钮上添加一个键盘在键盘上,选择第一个按钮,我对vuejs没有太多经验,而且我最近学习了它,请帮助我,我在doSomthing函数中添加了什么条件选择了第一个按钮@sebasaenz
      • @Mohammad 请检查我添加到答案中的链接。 doSomething 是您希望键盘事件触发的功能。您不能为按钮“添加键盘”,但您可以为您想要的事件添加事件处理程序:单击、按键事件等。希望您理解我无法在此处为您提供有关 Vue.js 事件处理的完整说明,但我建议您检查 v-on 指令的工作原理。希望它能让一切变得更加清晰。
      • 感谢您的回答,我在一小时前使用 Vanilla javascript 解决了这个项目。现在写在下面的项目,无论如何感谢您花时间回答我,最良好的祝愿。 @sebasaenz
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2021-08-25
      • 2015-03-26
      • 2011-01-31
      • 2016-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多