我想实现一个textarea,它自动地在React中插入关闭的parens,但是每当我修改textarea的value属性时,光标就会跳转到正在编辑的文本的末尾。如何保留文本区域文本更改上的光标位置?
这里是我的onChange功能:
//on change
function(event) {
var newText = event.target.value
var cursorPosition = getCursorPosition(event.target)
if(lastCharacterWasParen(newText, cursorPosition)){
newText = newText.slice(0, cursorPosition) + ')' + newText.slice(cursorPosition)
}
this.setProps({text: newText}})
}
这成功地插入了括号,但如何保存光标位置?
'selectionStart'和'selectionEnd'是绝对的路要走,但你必须确定textarea中没有自定义选择。 – borisano
@borisano是的,你是对的,我只是想到了它。如果在操作后没有选择任何东西,请设置selectionStart = selectionEnd。如果你想选择任何东西包围的东西,相应地改变。此外,不知道如果selectionStart> selectionEnd会发生什么... – Surely