Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在文本区域文本更改上保留光标位置?_Javascript_Jquery_Reactjs - Fatal编程技术网

Javascript 如何在文本区域文本更改上保留光标位置?

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

我试图实现一个textarea,它自动在React中插入关闭参数,但是每当我修改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}})

    }

这成功地插入了参数,但如何保持光标位置?

我以前也做过类似的事情

更改光标位置的方法是使用:
evt.target.selectionEnd


在您的情况下,您可以在插入之前记录selectionEnd,插入之后,将selectionEnd设置为其应该的位置。

您可以使用所述的
selectionStart
道具来存储并重置光标位置

var cursorPosition = $('#myTextarea').prop("selectionStart");

然后使用类似于设置光标位置的方法来设置光标位置。

selectionStart
selectionEnd
绝对是可行的,但您必须确保文本区域中没有自定义选择。@borisano是的,您是对的,我就是这么想的。如果操作后不应选择任何内容,请设置selectionStart=selectionEnd。如果要选择由参数包围的任何内容,请进行相应的更改。而且,如果选择Start>selectionEnd。。。
var cursorPosition = $('#myTextarea').prop("selectionStart");