2011-03-21 50 views
1

做我有一些这方面,有什么工作的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; 
    } 
} 

回答

0

如果你是刚刚更换的人物,而不是插入或删除 多了一行的价值字符的光标位置之前, 可以在开关前阅读tArea.scrollTop值,并在之后重置。