• 注册
    • 查看作者
    • vue 表单输入框不支持focus及blur事件的解决方案

       

      这篇文章主要介绍了vue 表单输入框不支持focus及blur事件的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      采用指令的方式来解决这个问题(此处的前端框架以mint-ui为例):

      1.html引用: v-mtfocus

      vue 表单输入框不支持focus及blur事件的解决方案

      2.在实例中添加指令

      directives: {
        ‘mtfocus’ (el, binding, vnode) {
         let mtinput = el.querySelector(‘input’)
         mtinput.onfocus = function () {
          …//如果要对节点的数据进行更改,且更改要映射到页面上,则更改可在vnode.context上进行,这样,改完之后,改变就会映射到页面
         }
         mtinput.onblur = function () {
          …//同上理
         }
        }
       }

      补充知识: vue中实现点击按钮使input显示的同时获取焦点

      需求说明:点击搜索按钮出现input框,并自动使input框聚焦。

      如图所示:

      实现方式1:利用vue的ref

      html代码如下:

        搜索

      Js代码如下:

      searchIn(){
       this.searchBtnFlag = !this.searchBtnFlag;
       this.$nextTick(function () {
        //DOM 更新了
        this.$refs.inputVal.focus()
       })
      },

      重点:只需要把需要的操作放在$nextTick内即可。

      实现方式2:利用js(原理其实等同于方式1)

        搜索

      Js代码如下:

      searchIn(){
       this.searchBtnFlag = !this.searchBtnFlag;
       this.$nextTick(function () {
       document.getElementById(“inputVal”).focus();
       })
      },

      说明:必须在$nextTick内使用方法是因为:dom更新的先后顺序的问题,不是所有的数据改变一定会触发dom的更新,而在修改数据之后立即使用这个方法,可以获取更新后的 dom。

      误区:直接使用autofocus

      html:

        搜索

      js:

      searchIn(){
         this.searchBtnFlag = !this.searchBtnFlag;
         this.$nextTick(function () {
        document.getElementById(“inputVal”).focus();
         })
       },

      这样的写法只在第一次时起作用,如果点击取消后再次点击搜索按钮则不会再次使input框自动聚焦。

      记录一下,以备以后忘了好找。

      以上这篇vue 表单输入框不支持focus及blur事件的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

      来源:脚本之家

      链接:https://www.jb51.net/article/199928.htm

      ,。,!

    • 0
    • 0
    • 0
    • 5
    • 请登录之后再进行评论

      登录
    • 单栏布局 侧栏位置: