在實際開發中我們經常會碰到這樣的場景,就是有input的地方都喜歡切換過去input自動獲取焦點。
如果這個問題是在input中,很容易就實現了,但是element里面的el-input看源碼,其實不只是一個input,所以aotofocus 這個屬性便不生效了。
解決方法網上也有不同的例子,比如vue的自定義指令,當然包括全局和組件的,但是我建議一種比較簡單的寫法:
this.$nextTick(() => {
this.$refs.input.$el.querySelector('input').focus()
})
因為有的時候input中是有默認值的,自動獲取焦點谷歌和火狐、360瀏覽器光標都正常。但是在IE上光標就跑到默認值的最左邊去了,、
查了下好像IE瀏覽器下input的光標默認就是在最左邊的,很顯然這不符合我們的需求,每次輸入的時候用戶還要多點一次。
我們想要的肯定是
我覺得比較嚴謹的做法就是先判斷瀏覽器,判斷IE瀏覽器的方法很多,這里就不寫多種了,有興趣自己上網查
// el-input 獲得焦點事件 @focus="getCursor"
getCursor (event) {
// 判斷是不是IE瀏覽器
if (window.ActiveXObject || 'ActiveXObject' in window) {
// 把光標移動input默認值的最后
event.target.setSelectionRange(this.position.length, this.position.length)
}
}