问题:tab键默认切换焦点
思路:阻止默认事件,获取光标位置,插入\t
// template
<el-input v-model="inputValue" @keydown.tab.native="tabInput($event)"></el-input>
// js
tabInput(e) {
e.preventDefault()
const insertText = '\t'
const elInput = e.target
const startPos = elInput.selectionStart
const endPos = elInput.selectionEnd
if (startPos === undefined || endPos === undefined) return
const txt = elInput.value
elInput.value = txt.substring(0, startPos) + insertText + txt.substring(endPos)
elInput.focus()
elInput.selectionStart = startPos + insertText.length;
elInput.selectionEnd = startPos + insertText.length;
this.inputValue = elInput.value
}