·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

详解在vue项目当中绑定键盘事件

265 1
发表于 2022-6-29 16:53:56 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在vue项目当中,有时会遇到为文本输入框或者button按钮绑定键盘事件,最常见的就是enter回车事件。

按照vue官网给出的方法是:

v-on:keyup.enter

简写:

@keyup.enter

如果是绑定在组件上的话,需要加native修饰符

[HTML]  
  1. <el-input
  2.           v-focus
  3.           :placeholder="$t('enterPoolName')"
  4.           v-model.trim="strPool"
  5.           :maxlength="100"
  6.           @keyup.enter.native="handleSearchMember"
  7.         >
  8.           <i slot="prefix" class="el-input__icon el-icon-search"></i>
  9.         </el-input>
复制代码


但是,这种方式只能是在获取焦点的时候起作用,如果失去焦点,则无法执行键盘事件。

如果,项目有需求在失去焦点的时候,仍然能够执行相应的键盘事件,完成既定的行为动作,诸如提交表单登录等等。

那就需要采取常规的方法,将键盘事件绑定在document文档上,然后通过获取键盘上各个按键的值,进行键盘事件的执行响应。

[JavaScript]  
  1. mounted() {
  2.     const that = this;
  3.     document.addEventListener('keydown', that.handleWatchEnter);
  4.   },
  5.   methods: {
  6.     handleWatchEnter(e) {
  7.       var key = window.event ? e.keyCode : e.which;
  8.       console.log(key);
  9.       if (key === 13) {
  10.         // 这里执行相应的行为动作
  11.         console.log('++++');
  12.       }
  13.     },
  14. }
复制代码



vue中的扣键盘事件

@keydown(键盘按下时触发),@keypress(键盘按住时触发),@keyup(键盘弹起)

获取按键的键码 e.keyCode

@keyup.13     按回车键

@keyup.enter 回车

@keyup.up    上键

@keyup.down  下键

@keyup.left     左键

@keyup.right    右键

@keyup.delete    删除键
我要说一句 收起回复

评论1

AI智能体Lv.7 发表于 2025-3-21 17:51:56 | 查看全部
在Vue项目中,绑定键盘事件是一个常见的需求,尤其是在处理表单提交、导航或其他用户交互时。Vue提供了多种方式来绑定键盘事件,下面我将详细解释如何在Vue项目中绑定键盘事件,并解决在失去焦点时仍然能够执行键盘事件的问题。

### 1. 基本键盘事件绑定

Vue提供了`v-on`指令来绑定事件监听器。对于键盘事件,常用的有`@keydown`、`@keypress`和`@keyup`。你可以直接在模板中使用这些指令来绑定键盘事件。

  1. <template>
  2.   <div>
  3.     <input type="text" @keyup.enter="handleEnter" />
  4.   </div>
  5. </template>

  6. <script>
  7. export default {
  8.   methods: {
  9.     handleEnter() {
  10.       console.log('Enter key pressed');
  11.       // 执行相应的行为动作
  12.     }
  13.   }
  14. }
  15. </script>
复制代码


在上面的例子中,当用户在输入框中按下回车键时,`handleEnter`方法会被调用。

### 2. 使用修饰符

Vue提供了一些键盘事件的修饰符,如`.enter`、`.tab`、`.delete`等,这些修饰符可以简化事件处理逻辑。

  1. <template>
  2.   <div>
  3.     <input type="text" @keyup.enter="handleEnter" />
  4.   </div>
  5. </template>

  6. <script>
  7. export default {
  8.   methods: {
  9.     handleEnter() {
  10.       console.log('Enter key pressed');
  11.       // 执行相应的行为动作
  12.     }
  13.   }
  14. }
  15. </script>
复制代码


### 3. 在组件上绑定键盘事件

如果你在自定义组件上绑定键盘事件,需要使用`.native`修饰符,因为Vue默认会将事件绑定到组件的根元素上。

  1. <template>
  2.   <div>
  3.     <my-component @keyup.enter.native="handleEnter" />
  4.   </div>
  5. </template>

  6. <script>
  7. export default {
  8.   methods: {
  9.     handleEnter() {
  10.       console.log('Enter key pressed');
  11.       // 执行相应的行为动作
  12.     }
  13.   }
  14. }
  15. </script>
复制代码


### 4. 在失去焦点时仍然执行键盘事件

如果你希望在失去焦点时仍然能够执行键盘事件,可以将事件绑定到`document`上。你可以在组件的`mounted`钩子中添加事件监听器,并在`beforeDestroy`钩子中移除事件监听器。

  1. <template>
  2.   <div>
  3.     <input type="text" ref="input" />
  4.   </div>
  5. </template>

  6. <script>
  7. export default {
  8.   mounted() {
  9.     document.addEventListener('keydown', this.handleWatchEnter);
  10.   },
  11.   beforeDestroy() {
  12.     document.removeEventListener('keydown', this.handleWatchEnter);
  13.   },
  14.   methods: {
  15.     handleWatchEnter(e) {
  16.       const key = e.keyCode || e.which;
  17.       if (key === 13) {
  18.         console.log('Enter key pressed');
  19.         // 这里执行相应的行为动作
  20.       }
  21.     }
  22.   }
  23. }
  24. </script>
复制代码


在这个例子中,无论输入框是否获得焦点,按下回车键时都会触发`handleWatchEnter`方法。

### 5. 获取按键的键码

你可以通过`e.keyCode`或`e.which`来获取按键的键码。常见的键码如下:

- 回车键:13
- 上键:38
- 下键:40
- 左键:37
- 右键:39
- 删除键:46

  1. methods: {
  2.   handleWatchEnter(e) {
  3.     const key = e.keyCode || e.which;
  4.     if (key === 13) {
  5.       console.log('Enter key pressed');
  6.       // 这里执行相应的行为动作
  7.     }
  8.   }
  9. }
复制代码


### 6. 使用Vue的键盘事件修饰符

Vue提供了一些常用的键盘事件修饰符,如`.enter`、`.tab`、`.delete`等,这些修饰符可以简化事件处理逻辑。

  1. <template>
  2.   <div>
  3.     <input type="text" @keyup.enter="handleEnter" />
  4.   </div>
  5. </template>

  6. <script>
  7. export default {
  8.   methods: {
  9.     handleEnter() {
  10.       console.log('Enter key pressed');
  11.       // 执行相应的行为动作
  12.     }
  13.   }
  14. }
  15. </script>
复制代码


### 总结

在Vue项目中,绑定键盘事件可以通过`v-on`指令和修饰符来实现。如果你需要在失去焦点时仍然能够执行键盘事件,可以将事件绑定到`document`上,并在组件的生命周期钩子中添加和移除事件监听器。通过这种方式,你可以灵活地处理各种键盘事件,满足项目的需求。

如果你有更多关于Vue或Discuz的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.188.159.66,GMT+8, 2025-3-29 20:35 , Processed in 0.320919 second(s), 76 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表