zoukankan      html  css  js  c++  java
  • 在vue项目中引用element-ui时 让el-input 获取焦点的方法

    在制作项目的时候遇到一个需求,点击一个按钮弹出一个input输入框,并让输入框获得焦点,项目中引用了ElementUI

    在网上查找了很多方法,
    但是在实际使用中发现了一个问题
    无论是使用$ref获取input元素然后使用focus方法
    还是使用饿了么组件自带的autoFocus
    都只有在第一次点击按钮的时候可以让Input获得焦点,在不刷新页面的情况下,第二次以后的按钮点击都不会让Input获得焦点。我到现在也没有搞明白这是为什么,猜测了一下是存才一个全局变量,当我们第一次使Input获得焦点以后改变了这个预设变量的值,在Input失去焦点的时候并没有将这个值重置,所以导致了后面的问题。
    废话不多说,

    下面是当同时使用Vue和el-input的时候的解决方案。

    Vue本身提供了自定义指令的方法

    
    // 注册一个全局自定义指令 `v-focus`
      Vue.directive('focus', function (el) {
        el.focus()
      })
    

    这样使我们在组件中可以自用的调用v-focus方法,给他绑定定义布尔变量来控制元素是否获得焦点
    但是这里要注意的是组件<el-input>本身在页面中渲染成了一个div元素
    所以我们要在<el-input>被绑定为v-focus的同时
    在自定义指令中获取组件下通过querySelector()方法获取input元素

    
    &lt;el-input 
      v-model.trim="searchFor" 
      @blur="blurSearchFor"
      v-focus="blurFocus"&gt;
    &lt;/el-input&gt;
    
    
    Vue.directive('focus', function (el) {
      el.querySelector('input').focus()
    })
    

    原文地址:https://segmentfault.com/a/1190000014164763

  • 相关阅读:
    ABAP中COLLECT的用法
    中文字符串提交乱码的解决方法
    我的Ubuntu系统
    SAP消息呈现
    ASP.NET博客站点全静态化的困扰
    JS利用函数修改全局变量
    让电脑速度增快几倍的法宝
    我的Ubuntu门派
    给老乡买本本的经历
    多事之秋
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9919492.html
Copyright © 2011-2022 走看看