如果对以前的文本进行编辑,则光标跳到文本末尾

时间:2011-03-21 17:45:13

标签: javascript text cursor field

我有一些有用的JavaScript代码。我无法弄清楚的是,在我对文本中较早的内容进行编辑之后,光标会跳转到文本字段中文本的末尾。

如果我对以前的某些文本进行编辑,是否有某种方法可以将光标保持在当前位置?

以下是工作页面:http://rebol.vlexo.net/Programming/keys/esp/esp_keyboard.htm

...和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;
    }   
}

2 个答案:

答案 0 :(得分:2)

原因是您要替换整个文本值。在执行替换之前,您需要保存光标位置,然后重新设置。有关详细信息,请参阅此文章:http://parentnode.org/javascript/working-with-the-cursor-position/

答案 1 :(得分:0)

如果您只是替换字符,而不是插入或删除 在光标位置之前超过一行的字符, 你可以在切换之前读取tArea.scrollTop值,并在之后重置它。