Vue:div上绑定键盘的enter事件

578 阅读1分钟
  • 有这样的情况,在dialog框中有一个div,div中有一个input框和一个按钮,input框中输入数据后,点击按钮会请求后台数据。
  • 如果想按enter键也可以请求后台数据,可以在div加上enter事件后,但结果有两种情况
    1. 若鼠标焦点在input中的时候enter事件会生效
    2. 若鼠标焦点在input之外enter事件没有反应
  • 第一种情况我的理解是一个事件冒泡,input上没有绑定enter事件,但会向父级标签传播这个事件,刚好div上定义了enter事件,因此得到执行;
  • 第二种情况可以在created周期函数中在ducument上设置全局的keyup事件
<div @keyup.enter="search">
    <el-input></el-input>
    <el-button type='primary' @click="search">查询</el-button>
</div>
created(){
    const self = this
    document.onkeyup = function(e){
        if(e.key == 'Enter'){
            self.search()
        }
    }
}

本来想用e.keyCode,但看代码提示已经废弃了