按ESC键时关闭对话框

ben*_*nno 14 vue.js vuejs2 vuetify.js

当用户按下键盘上的ESC键时,如何在没有激活器的情况下关闭打开的对话框

Tra*_*axo 20

添加@keydown.esc="dialog = false"v-dialog组件

<v-dialog v-model="dialog" @keydown.esc="dialog = false"></v-dialog>

data: () => ({
  dialog: false
}),
Run Code Online (Sandbox Code Playgroud)

工作示例:https: //codepen.io/anon/pen/BJOOOQ


另外,如果使用对话框作为自定义组件,那么我们可能需要发出输入事件:

<template>
  <v-dialog :value="value" @keydown.esc="$emit('input')">
  ...
Run Code Online (Sandbox Code Playgroud)

  • 仅当您在模式中选择了任何内容时,这才有效。如果没有选择,事件会在body上触发,不会起作用。因此,遗憾的是@Dazzle 的解决方案更好。 (2认同)

Daz*_*zle 9

这是我能够让它工作的唯一方法

mounted() {
    // Close modal with 'esc' key
    document.addEventListener("keydown", (e) => {
        if (e.keyCode == 27) {
            this.$emit('close');
        }
    });
},
Run Code Online (Sandbox Code Playgroud)


kam*_*yar 7

这段代码也许可以帮助你

mounted() {
        let self = this;
        window.addEventListener('keyup', function(event) {
            // If  ESC key was pressed...
            if (event.keyCode === 27) {
                // try close your dialog
                self.advanced_search = false;
            }
        });
    },
Run Code Online (Sandbox Code Playgroud)