我有类似here的要求。我正在研究一些与埃塞俄比亚语言有关的项目,名为Amharic。该项目涉及自动将拉丁字符翻译成他们在按键上的埃塞俄比亚字母。在阿姆哈拉语中,每个拉丁字符(如t,m,n,...)都映射到至少7个字符。例如,字母t可以映射到7个埃塞俄比亚字母系列(ተቱቲታቴትቶ)。在这里当你只需按t它将被映射到ት,当你按下字母t后跟e时,它将被映射到ተ。当您按下字母t后跟i时,它将映射到ቲ,依此类推。我已经尝试过Tim Down的答案,其中部分工作在我的案例中。至少文本被插入相对于光标的适当位置。但是,提供的解决方案仅在我按下第一个字母(例如t)时有效,但是当我尝试按t后跟元音(a,e,i,o,u)时,它首先显示核心映射的字母(带有t) )然后用t和a映射的字母。这与textarea完美配合,但无法使用contentEditable div。我的项目类似于here给出的项目。
我试图按如下方式修改答案,但仍然无法将curso移到最后。
function insertTextAtCursor(text, value, stepback) {
var sel, range, textNode;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
textNode = document.createTextNode(text);
range.insertNode(textNode);
// Move caret to the end of the newly inserted text node
range.setStart(textNode, textNode.length-stepback+value);
range.setEnd(textNode, textNode.length);
//range.collapse(false);
// range.setStart(textNode, textNode.length);
//range.setEnd(textNode, textNode.length);
sel.removeAllRanges();
sel.addRange(range);
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
range.pasteHTML(text);
}
}
您能否帮我解决一下如何修改Tim提供的解决方案以解决问题?