element input輸入框自動獲取焦點的實現

最近項目中在做表單的時候,需要自動滾動到評論框,並且讓評論框自動聚焦,這就需要手動觸發輸入框的 focus 狀態。

但是,element並不支持autofocus屬性,那就隻能通過原生的js效果獲取聚焦效果瞭

document.getElementById("input").focus();

或者利用vue的ref屬性也可以實現聚焦效果:

原理其實很簡單,Element 已經提供瞭 focus 方法,但是文檔並沒有寫明如何去調用,下面是在el-input標簽上加入ref屬性,然後在需要的地方直接調用方法就可以瞭

<el-input v-model="input" placeholder="請輸入內容" ref="input"></el-input>
this.$nextTick(() => {
      this.$refs.input.focus()
    })

註意:一個頁面隻能有一個聚焦效果

last , vue也支持自定義指令

當頁面加載時,該元素將獲得焦點 (註意:autofocus 在移動版 Safari 上不工作)。事實上,隻要你在打開這個頁面後還沒點擊過任何內容,這個輸入框就應當還是處於聚焦狀態。現在讓我們用指令來實現這個功能:

// 註冊一個全局自定義指令 `v-focus`
Vue.directive('focus', {
  // 當被綁定的元素插入到 DOM 中時……
  inserted: function (el) {
    // 聚焦元素
    el.focus()
    // element-ui
    el.children[0].focus()
    // 元素有變化,如show或者父元素變化可以加延時或判斷
    setTimeout(_ => {
      el.children[0].focus()
    })
  }
})

參考:vue自定義指令 https://cn.vuejs.org/v2/guide/custom-directive.html

到此這篇關於element input輸入框自動獲取焦點的實現的文章就介紹到這瞭,更多相關element input輸入框自動獲取焦點內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: