vue之在页面中监听键盘的Enter键来触发某个按钮事件

项目中得需求:给页面某个按钮绑定Enter键,但是按钮不在form中,直接给按钮绑定后此按钮只有获取了焦点按键才会触发,显然,一直保持按钮获取焦点是不现实得。所以通过查询等,结合项目需求,完成了下面得代码,希望对大家有用,欢迎一起探讨,Email:[email protected]

首先,一直在想怎样能够不管焦点在本页面得那里,点击Enter键得时候都能够触发按钮事件,然后开始想。。。。

本项目为vue项目:

1.在页面得created中来监听键盘得按键事件,焦点在本页面任何地方,都可以通过下面得代码来监听,当然,不止于本页面,留着后面说。

          created(){
		        
			var lett = this;
			/**
			 * 
			 */
			document.onkeydown = function(e) {
				//1.规避页面上方的搜索框等是否获取了焦点,是则不触发本次快捷键
				var inputs = document.getElementsByClassName('isfocus_enter'); //找到这一组元素
				//是否获取了焦点的判断
				let hasFocus = false;
				if(inputs && inputs.length >0){
					for(let i=0;i<inputs.length;i++){
						//如果hasFocus为true表示input元素获得焦点,否则没有获得焦点
						hasFocus = document.hasFocus() && document.activeElement === inputs[i];
						if(hasFocus == true){
							break;
						}
					}
				}
			    console.log("判断不该获取焦点的元素是否获取了焦点(isfocus_enter):%s",hasFocus);
				if(lett.displayWindow == true //停车收费单开启
					&& lett.editHide != true //编辑关闭
					&& lett.yktHide != true  //一卡通支付关闭
					&& lett.openHide != true  //强行起杆关闭
					&& lett.addNewOderHide  != true //补入场记录关闭
					&& lett.offSiteHide  != true 
					&& lett.contListHide  != true
					&& hasFocus  != true
				){
						var key = window.event.keyCode;
						console.log("按键:%s",key);
						if (key == 13) {
							lett.edit2(); //此方法是当按下enter键后要做的动作。
						}
						
				}
			}
			
		},

这里由于当前页面有些输入框也绑定了enter键,这样会有冲突,所以这里判断要是焦点在绑定了enter键得输入框上,就不执行此次监听。ps:知识点:如何获取当前焦点所在得元素

猜你喜欢

转载自blog.csdn.net/qi_dabin/article/details/83901498