項目中需要實現(xiàn)在輸入框內(nèi)的任意位置,追加內(nèi)容,這里通過input的selectionStart屬性還有setSelectionRange方法來實現(xiàn)。
首先來看selectionStart屬性,用于獲取文本框選區(qū)的開始位置,selectionEnd用于獲取文本框選區(qū)結束的位置,舉個栗子:


在該功能中,我們不是選擇文字,主要是需要獲取光標的位置,不選中文字時selectionStart和selectionEnd屬性的值是一樣的。
再看setSelectionRange方法,它也是作用在input元素上的,可以通過設置起始和終止位置,來選中一段文本中的一部分,inputElement.setSelectionRange(selectionStart, selectionEnd, [optional] selectionDirection),還可以選擇方向。當起始位置和終止位置一樣時,就相當于是改變輸入框中光標的位置了。
看一下具體實現(xiàn):


代碼如下:
async insertContent(val){
let dom = this.$refs.textareaI.$refs.textarea;
// console.dir(dom);
let index = dom.selectionStart;
let contont = dom.value;
this.textarea = contont.substring(0,index) + val + contont.substring(index,contont.length)
await this.$nextTick();
dom.focus();
dom.setSelectionRange(index + val.length,index + val.length)
},
需要注意幾點:一定要等到dom更新完成后再去改變光標的位置;
再講一個小tips:
不論是vue中ref獲取的元素節(jié)點,或者通過原生獲取的節(jié)點,當我們想要查看元素節(jié)點的屬性時,可以通過這三個方法查看:
包數(shù)組:console.log([dom])
包對象:console.log({dom})文章來源:http://www.zghlxwxcb.cn/news/detail-568912.html
使用console.dir打印,可以打印出該對象的所有屬性和屬性值。文章來源地址http://www.zghlxwxcb.cn/news/detail-568912.html
到了這里,關于vue input獲取光標位置,并追加內(nèi)容的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!