虽然我已经得到了答案,但我会在这个问题上获得小额奖励。答案是不可能,我正在寻找替代解决方案或其他建议。
我正在使用HTML designMode制作一个非常自定义的编辑器。在一种情况下,我希望按下实际键一次,按键的默认操作可以完成两次。在这种情况下,我说的是DOWN键(keyCode 40)。当按下它时,我想跳过一行,将光标(|
)放在下一行。像:
First li|ne
Second line
The third line
按下向下箭头键后:
First line
Second line
The third| line
我尝试过以编程方式设置按键事件,让它们被JavaScript触发,但这并不会移动光标。关于如何做到这一点的任何想法?
答案 0 :(得分:2)
你将无法以合理的方式做到这一点。在非IE浏览器中以编程方式移动插入符的唯一方法是使用浏览器的Selection
对象,该对象没有模拟向下箭头按键的机制。
答案 1 :(得分:0)
你可以结合几种技术来做到这一点。第一个是将光标移动到文本区域中任意位置的函数:
function setCaretPosition(elemId, caretPos) {
var elem = document.getElementById(elemId);
if(elem != null) {
if(elem.createTextRange) {
var range = elem.createTextRange();
range.move('character', caretPos);
range.select();
}
else {
if(elem.selectionStart) {
elem.focus();
elem.setSelectionRange(caretPos, caretPos);
}
else
elem.focus();
}
}
}
以上代码来自此blog post,我必须使用Google缓存查看。接下来,您需要找到current cursor position in the textarea。
最后,使用当前光标位置,您可以获得indexOf(),相对于光标位置回车,并使用它将光标向下移动2行。
漂亮不是,但它应该有效。