Javascript 如何在文本区域文本更改上保留光标位置?
我试图实现一个textarea,它自动在React中插入关闭参数,但是每当我修改textarea的value属性时,光标就会跳到正在编辑的文本的末尾 以下是我的onChange函数:Javascript 如何在文本区域文本更改上保留光标位置?,javascript,jquery,reactjs,Javascript,Jquery,Reactjs,我试图实现一个textarea,它自动在React中插入关闭参数,但是每当我修改textarea的value属性时,光标就会跳到正在编辑的文本的末尾 以下是我的onChange函数: //on change function(event) { var newText = event.target.value var cursorPosition = getCursorPosition(event.target) if(last
//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}})
}
这成功地插入了参数,但如何保持光标位置?我以前也做过类似的事情 更改光标位置的方法是使用:
evt.target.selectionEnd
在您的情况下,您可以在插入之前记录selectionEnd,插入之后,将selectionEnd设置为其应该的位置。您可以使用所述的
selectionStart
道具来存储并重置光标位置
var cursorPosition = $('#myTextarea').prop("selectionStart");
然后使用类似于设置光标位置的方法来设置光标位置。
selectionStart
和selectionEnd
绝对是可行的,但您必须确保文本区域中没有自定义选择。@borisano是的,您是对的,我就是这么想的。如果操作后不应选择任何内容,请设置selectionStart=selectionEnd。如果要选择由参数包围的任何内容,请进行相应的更改。而且,如果选择Start>selectionEnd。。。
var cursorPosition = $('#myTextarea').prop("selectionStart");