vue如何实现页面键盘事件(附代码)

本篇文章给大家带来的内容是关于vue如何实现页面键盘事件(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

 

我司开发项目,用的是vue+elementUI,做登陆页面的时候,点击enter键的时候要实现和点击登陆按钮一样的功能,所以就百度了一下,于是一通百度之后,就在点击按钮上面直接添加了@keyup.enter.native="submitForm('loginData')",特么开心的保存之后去登陆页面点击enter键竟然没有暖子用。接着百度发现如果你用了element直接在按钮或者el-input上面绑定键盘事件是没有用的,因为需要先获取焦点巴拉巴拉一大堆。解决问题是首要的,接着百度。找到了正确的绑定方法:在vue的created钩子里面插入如下代码就ok

created(){

       var _self = this;

       document.onkeydown = function(e){

             var key = window.event.keyCode;

            if(key == 13){

              _self.submitForm('loginData');

           }

      }

 }

顺便把我的登陆代码也贴上来: 

methods: {

   submitForm(formName) {

       var _self = this;

       this.$refs[formName].validate((valid) => {

         if (valid) {

             getInfo.post('api-token-auth/',{username:_self.loginData.userCount,password:_self.loginData.password}).then(function(data){

               if(data.data.code == 0){

                    let jwtSession = 'JWT'+' '+data.data.token;

                    localStorage.setItem("checkSession", jwtSession);

                     localStorage.setItem("userInfo", data.data.userinfo.username);                      l             
              localStorage.setItem("routes",JSON.stringify(data.data.userinfo.permissions))

                                // 路由权限过滤

                               var menuData = JSON.parse(localStorage.getItem('routes'));

                                var localRouter = _self.$router.options.routes

                          for(let i = 0;i<menuData.length;i++){

                            for(let q = 0;q<localRouter.length;q++){

                         if(menuData[i].codename == localRouter[q].path.replace(/\//,"")){

                                   localRouter[q].hidden = false;

                                    } 

                                  }

                                }

                                _self.$router.addRoutes(localRouter)

                                _self.$router.push({ path: '/ops_menu_sever_manage'});

                            }

                            else{

                                _self.$message({

                                    message: data.data.msg,

                                    type: 'warning'

                                });

                                // _self.$router.push({ path: '/login'});

                            }

                             

                       });

                    } else {

                        console.log("验证没通过!")

                    }

                });

            },

             

        },

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值