Курсор, переходящий к концу текста, если редактирование выполнено к предыдущему тексту - PullRequest
1 голос
/ 21 марта 2011

У меня есть этот кое-какой рабочий код 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 ]

2 голосов
/ 21 марта 2011

Причина в том, что вы заменяете все текстовое значение. Вам нужно будет сохранить положение курсора перед выполнением замены, а затем заново установить его. См. Эту статью для получения дополнительной информации: http://parentnode.org/javascript/working-with-the-cursor-position/

0 голосов
/ 21 марта 2011

Если вы просто заменяете символы, а не вставляете или удаляете больше, чем строка символов перед позицией курсора, Вы можете прочитать значение tArea.scrollTop перед переключателем и сбросить его после.

...