Vue中监听键盘事件及自定义键盘事件

背景:
在一些搜索框中,我们往往需要监听键盘的按下(onkeydown)或抬起(onkeyup)事件以进行一些操作。在原生js或者jQuery中,我们需要判断e.keyCode的值来获取用户所按的键。这样就存在一个问题:我们必须知道某个按键的keyCode值才能完成匹配,使用起来十分不便。
在这里插入图片描述
方案:
Vue中,已经为常用的按键设置了别名,这样我们就无需再去匹配keyCode,直接使用别名就能监听按键的事件。

<input @keyup.enter="function">

在这里插入图片描述
另外,Vue中还支持组合写法:
注意
但是,如果是在自己封装的组件或者是使用一些第三方的UI库时,会发现并不起效果,这时就需要用到.native修饰符了,如:

<el-input
  v-model="inputName"
  placeholder="搜索你的文件"
  @keyup.enter.native="searchFile(params)"
  >
</el-input>

如果遇到.native修饰符也无效的情况,可能就需要用到$listeners了,具体用法请参考Vue官方文档:将原生事件绑定到组件。

另外:

	//自定义键盘事件
	Vue.directive('on').keyCodes.ctrl=17;

例:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>键盘事件</title>
	<script src="js/vue.js"></script>
	<script>

		//自定义键盘事件
		Vue.directive('on').keyCodes.ctrl=17;  

		window.onload=function(){
			var vm=new Vue({
				el:'#wrap',
				data:{ 
					
				},
				methods:{ 
					show:function(e){
						// console.log(111);
						// console.log(e.keyCode); //按钮的code值,ASCII码

						//判断是否按下回车
						/*if(e.keyCode==13){
							console.log('您按下回车');
						}*/
						console.log(111);
					}	
				}
			});
		};
	</script>
</head>
<body>
	<div id="wrap">	
		<!-- 用户名:<input type="text" @keydown="show($event)"> -->
		
		<!-- 简化按键的判断 -->
		<!-- 用户名:<input type="text" @keydown.13="show($event)"> -->
		<!-- 用户名:<input type="text" @keydown.enter="show($event)"> -->
		<!-- 用户名:<input type="text" @keydown.delete="show($event)"> -->
		<!-- 用户名:<input type="text" @keydown.x="show($event)"> -->
		用户名:<input type="text" @keydown.ctrl="show($event)">
	</div>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值