Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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_Html_Reactjs_Textarea - Fatal编程技术网

Javascript 在文本区域中按“回车”键不会';无法正确更改光标索引

Javascript 在文本区域中按“回车”键不会';无法正确更改光标索引,javascript,html,reactjs,textarea,Javascript,Html,Reactjs,Textarea,在javascript中,我们可以通过使用文本输入元素的element.selectionStart或element.seletionnd属性来获取textarea元素中光标的“索引”。因此,当位于第0行(第一行)上时,包含40列和10行的文本区域的光标位置应为0-40。但是,当按下enter键时,光标位置不会相应地更新,该键会将光标移动到文本输入元素中的下一行。事实上,按enter键只会在文本区域中添加一个空格,从而使光标位置与按enter键之前的位置相同。为什么会这样?有没有办法达到将光标位

在javascript中,我们可以通过使用文本输入元素的element.selectionStart或element.seletionnd属性来获取textarea元素中光标的“索引”。因此,当位于第0行(第一行)上时,包含40列和10行的文本区域的光标位置应为0-40。但是,当按下enter键时,光标位置不会相应地更新,该键会将光标移动到文本输入元素中的下一行。事实上,按enter键只会在文本区域中添加一个空格,从而使光标位置与按enter键之前的位置相同。为什么会这样?有没有办法达到将光标位置更新到下一行的预期效果

为了更好地解释我所说的内容,我加入了以下代码片段

var input=document.getElementById(“PMCDefMsgtxt”);
input.addEventListener(“键控”,函数(事件){
//数字13是键盘上的“回车”键
如果(event.keyCode===13){
event.preventDefault();
//应将光标位置记录到控制台
console.log(输入.选择结束);
}
});

JS-Bin

回车键实际上输入了一个换行符,因此它不会计算其余的列,而是只计算换行符

如果要计算每个
enter
上的列数,必须定义一个变量,将每个
enter
上的列数相加。换句话说,在事件侦听器中,当
keyCode
等于
13
时,必须将该数字添加到变量中,例如
40-element.selectionEnd