element-ui vue input輸入框自動獲取焦點聚焦方式

element-ui vue input輸入框自動獲取焦點聚焦

在這裡插入圖片描述

有時候會遇到要輸入框自動獲取焦點的情況,解決如下: 

方法一

步驟:

1.在script中寫directives,註冊一個全局的自定義指定 v-focus

 directives: {
   focus: {
      inserted: function(el) {
        el.querySelector("input").focus();
      }
    }
 },

2.在input框直接使用

<el-input
   ...
  v-focus
>
</el-input>

方法二

步驟:

1.給輸入框設置一個ref

<el-input
  ref="saveTagInput"
 >

2.在需要的時候操作ref獲取焦點

this.$refs.saveTagInput.focus();

vue輸入框自動獲取焦點的三種方式

方式一:原生JS操作DOM

<template>
  <div class="focusDemo">
    <input type="text" v-model="username" id='inputId'/>
  </div>
</template>
<script>
export default {
  data () {
    return {
      username: ''
    }
  },
  mounted () {
    document.getElementById('inputId').focus()
  }
}
</script>

方式二:ref方式實現

<template>
  <div class="focusDemo">
    <input ref="inputName" type="text" v-model="username" />
  </div>
</template>
<script>
export default {
  data () {
    return {
      username: ''
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.$refs.inputName.focus()
    })
  }
}
</script>

方式三:使用自定義指令

main.js中

// 註冊一個全局自定義指令 `v-focus`
Vue.directive('focus', {
  // 當被綁定的元素插入到 DOM 中時
  inserted: function (el) {
    // 聚焦元素
    el.focus()
  },
  update: function (el) {
    // 聚焦元素
    el.focus()
  }
})

vue文件中

<template>
  <div class="focusDemo">
    <input type="text" v-model="username" v-focus />
  </div>
</template>
<script>
export default {
  data () {
    return {
      username: ''
    }
  }
}
</script>

總結

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: