我有一些有用的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 :(得分:2)
原因是您要替换整个文本值。在执行替换之前,您需要保存光标位置,然后重新设置。有关详细信息,请参阅此文章:http://parentnode.org/javascript/working-with-the-cursor-position/
答案 1 :(得分:0)
如果您只是替换字符,而不是插入或删除 在光标位置之前超过一行的字符, 你可以在切换之前读取tArea.scrollTop值,并在之后重置它。