vue 控制键盘 自带修饰符

本文探讨了如何在 Vue.js 应用中优雅地处理键盘事件,特别是利用内置修饰符来控制上下箭头键的功能。通过示例代码展示了如何使用 @keydown.down 和 @keydown.up.prevent 修饰符,简化了原本通过 keyCode 检查的复杂逻辑,提高代码可读性。同时,提到了其他常用的键盘和鼠标修饰符,为前端开发者提供了一种更加直观的事件处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue 控制键盘 自带修饰符

网页做防百度搜索栏,看有代码用到了@keydown.down=“changeDown()”,@keydown.up.prevent=“changeUp()”
控制在 input 框中 键盘使用⬆️和⬇️的,我们一般使用键盘的索引,如但代码多且不优雅

keydown(event) {
						// console.log(event);
						//下键:40 上键:38
						if (event.keyCode == 38) {
							//按的上键
							this.listIndex--;
							if (this.listIndex < 0) {
								this.listIndex = this.arr.length - 1;
							}
							this.wd = this.arr[this.listIndex];
						} else if (event.keyCode == 40) {
							//说明你按的是下键
							this.listIndex++;
							if (this.listIndex > this.arr.length - 1) {
								this.listIndex = 0;
							}
							this.wd = this.arr[this.listIndex];
						} else if (event.keyCode == 13) {
							//如果你按的是enter,那么就跳转到百度搜索结果
							window.open("https://www.baidu.com/s?wd=" + this.wd);
						}

					}

如果使用vue自己的修饰符更直观,@keydown.down=“changeDown()”,@keydown.up.prevent=“changeUp()”
代码如下

 <a-input placeholder="请输入能力名称"
                  v-model="searchName"
                  @keyup="onSearchData($event)"
                  @keydown.down="changeDown()"
                  @keydown.up.prevent="changeUp()"
                  @pressEnter="submitData()"
                  @focus="focusData()"
                  @click="settingEvent($event)">
                  <a-icon slot="prefix" type="search" />
                </a-input>

案例

@keydown.down=“changeDown()” 控制在 input 框中 键盘使用⬆️
@keydown.up.prevent="changeUp()"控制在 input 框中 键盘使用⬇️

其键盘按键修饰符

.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta

鼠标修饰符

.left
.right
.middle

官网链接:https://cn.vuejs.org/v2/guide/events.html#%E6%8C%89%E9%94%AE%E4%BF%AE%E9%A5%B0%E7%AC%A6

Vue.js中,处理用户按下回车键(Enter键)的事件是非常常见的需求之一。无论是用于表单提交还是其他交互操作,掌握如何监听和响应回车事件都能提升用户体验。下面详细介绍几种在Vue组件内绑定和使用回车事件的方式。 ### 绑定键盘事件 #### 1. 基本形式:v-on 和 keyup.enter 最简单的办法就是利用 Vue 提供的修饰符`.enter`,它可以很方便地监听用户的 Enter 键按下动作。你可以将其直接附加到输入框或其他元素上,当该元素处于焦点状态并且用户按下了回车键时触发相应的回调函数。 ##### 示例代码: ```html <template> <input v-model="message" @keyup.enter="handleSubmit"> </template> <script setup> import { ref } from 'vue'; const message = ref(''); function handleSubmit() { console.log('Form submitted:', message.value); } </script> ``` 在这个例子中,我们创建了一个双向绑定 (`v-model`) 的 `<input>` 元素,并为其绑定了一个带有 `.enter` 修饰符的 `@keyup` 事件处理器。每当用户在此输入框里按下回车键时就会调用 `handleSubmit` 函数打印消息内容。 #### 2. 直接检测 keyCode 或 code 属性 (不推荐) 虽然可以手动编写 JavaScript 来捕捉特定按键码(`keyCode`)或按键名称(`code`)来进行判断,但由于浏览器标准的变化以及不同设备间可能存在差异,这种方法容易出现问题并不太可靠。因此除非特别需要细粒度控制,否则建议优先采用上述内置修饰符的方式来简化开发过程。 #### 3. 使用 native 修饰符 如果你想要在一个非 input 类型的 HTML 标签(比如 div、button 等)上来捕获全局范围内的 Enter 按键事件,则可以结合原生 DOM 事件监听器与 Vue 的自定义指令一起工作。例如: ##### 示例代码: ```html <div @keydown.native.enter="onDivKeyPress">Press enter here...</div> ``` 注意这里的 `.native` 关键字表示我们要监听的是宿主元素自身的事件而非它的子节点引发的冒泡事件;而后面的 `.enter` 同样是告诉框架只有当目标键为 Enter 键时才执行后续的动作。 ### 自动聚焦与阻止默认行为 有时候你可能会希望页面加载完毕后自动让某个文本框获得焦点以便快速开始打字,这时可以用 `autofocus` 属性轻松做到这一点。此外,在某些情境下为了防止默认表单提交等副作用的发生,记得要在 handler 中显式调用 event.preventDefault() 或者返回 false。 ### 表单提交案例 通常情况下,表单会自带处理回车提交的功能,但如果你想定制化这一流程也可以这么做: ##### 示例代码: ```html <form @submit.prevent="onSubmit"> <!-- form elements --> <input type="text" v-model="formInput" /> <button type="submit">Submit</button> </form> <script setup> ... async function onSubmit(event) { try { await submitData(formInput); // Your API call or other actions. alert('Submitted successfully!'); } catch(error){ console.error("Failed to submit:", error); } } </script> ``` 在这里,我们给整个表单加了个 `@submit.prevent` 事件侦听器,它会在点击按钮或者按了回车之后被激活。同时由于加上了 `.prevent` 修饰符,所以即使没有显示指定 button 的 `type=submit`, 回车也只会触发我们的异步请求而不是刷新页面。 --- 以上就是在 Vue 应用程序里面设置及管理回车事件的一些常见技巧。正确运用它们可以使应用程序更加流畅友好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知知洋洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值