zoukankan      html  css  js  c++  java
  • v-focus给input设置焦点

    在Vue中要给input设置焦点,需要注册自定义指令。

    main.js中

    Vue.directive('focus', function (el, option) {
      var defClass = 'el-input', defTag = 'input';
      var value = option.value || true;
      if (typeof value === 'boolean')//页面中只有一个组件用到v-focus指令 v-focus='true'
        value = { cls: defClass, tag: defTag, foc: value };
      else//页面有多个组件用到v-focus指令
        value = { cls: value.cls || defClass, tag: value.tag || defTag, foc: value.foc || false };
      if (el.classList.contains(value.cls) && value.foc)//当页面中包含defclass,且foc属性为true时
        el.getElementsByTagName(value.tag)[0].focus();//设置tag的第一个元素聚焦
    });

    由于ElementUI中的el-input是一个自定义组件,并非input元素,所以需要传入组件的class和tag名称来定位组件内的原生input,并调用input的focus方法来获得焦点。

    页面中只有一个组件用到focus指令

    <el-input v-focus="true"></el-input>

    页面中有多个组件用到focus指令,需要传入class和tag来定位具体的元素

    <el-input v-focus="{cls: 'el-input',tag: 'input', foc:focususername}"  v-on:blur="focususername=false" placeholder="请输入用户名"></el-input>
    <el-input v-focus="{cls: 'el-input',tag: 'input', foc:focususerpwd}"  v-on:blur="focususerpwd=false" placeholder="请输入密码"></el-input>
    export default {
      name: "Login",
      data() {
        return {
          focususername: true,
          focususerpwd: true,
          }; 
      },
    }
  • 相关阅读:
    Hardware Virtualization
    Windows Vista 中脱机文件的更改
    Vista右键打开方式有两个记事本。
    SQL Server 2008 无法采用SQL认证模式登录(已解决)
    .NET 书籍推荐
    快速掌握一个语言最常用的50% 孟岩
    [原创] 大内存妙用 之 Readyboost 篇
    .Net 中的反射 14
    pureMVC使用实践
    有关于movieClip的一些问题
  • 原文地址:https://www.cnblogs.com/liangtao999/p/12882660.html
Copyright © 2011-2022 走看看