Javascript 如果对上一个文本进行编辑,光标将跳到文本末尾

Javascript 如果对上一个文本进行编辑,光标将跳到文本末尾,javascript,text,cursor,field,Javascript,Text,Cursor,Field,我有一些什么工作的JavaScript代码。我不明白的是,为什么在我对文本中较早的内容进行编辑后,光标会跳到文本字段中文本的末尾 如果我对以前的一些文本进行编辑,是否有办法使光标保持在当前位置 以下是工作页面: …和特定于JS的代码 // This code checks for a certain keypress combo. For example cx, Cx, gx, Gx, etc... // The hard to type esperanto characters we aim

我有一些什么工作的JavaScript代码。我不明白的是,为什么在我对文本中较早的内容进行编辑后,光标会跳到文本字段中文本的末尾

如果我对以前的一些文本进行编辑,是否有办法使光标保持在当前位置

以下是工作页面:

…和特定于JS的代码

// This code checks for a certain keypress combo. For example cx, Cx, gx, Gx, etc...
// The hard to type esperanto characters we aim to insert.

var esperanto = [
    ['cx','\u0109'],  ['gx','\u011D'],
    ['hx','\u0125'],  ['jx','\u0135'],
    ['sx','\u015D'],  ['ux','\u016D'],

    ['Cx','\u0108'],  ['Gx','\u011C'],
    ['Hx','\u0124'],  ['Jx','\u0134'],
    ['Sx','\u015C'],  ['Ux','\u016C']
];

document.onkeyup = changeChars;

function changeChars(e) {
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
    if(KeyID == 88)
    {
        var tmp = document.getElementById('TArea').value;
        for (var i=0; i<esperanto.length; i++) {
            re = new RegExp(esperanto[i][0],"g");
            tmp = tmp.replace(re,esperanto[i][1]);
        }
        document.getElementById('TArea').value = tmp;
    }   
}
//此代码检查某个按键组合。例如cx、cx、gx、gx等。。。
//我们希望插入的难以键入的世界语字符。
var世界语=[
['cx','\u0109'],['gx','\u011D'],
['hx','\u0125'],['jx','\u0135'],
['sx','\u015D'],['ux','\u016D'],
['Cx','\u0108'],['Gx','\u011C'],
['Hx','\u0124'],['Jx','\u0134'],
['Sx','\u015C'],['Ux','\u016C']
];
document.onkeyup=changeChars;
函数更改字符(e){
var-KeyID=(window.event)?event.keyCode:e.keyCode;
if(KeyID==88)
{
var tmp=document.getElementById('TArea').value;

对于(var i=0;i,原因是您正在替换整个文本值。您需要在执行替换之前保存光标位置,然后重新设置。有关更多信息,请参阅本文:

,如果您只是替换字符,而不是插入或删除 光标位置前超过一行的字符数, 您可以在开关之前读取tArea.scrollTop值,然后将其重置