代码之家  ›  专栏  ›  技术社区  ›  Johan

HTML设计模式,使用默认按键处理程序以编程方式移动光标

  •  0
  • Johan  · 技术社区  · 14 年前

    虽然我已经得到了答案,但我会在这件事上开始一个小小的悬赏。因为答案是这是不可能的,我正在寻找一个替代方案或其他一些建议。

    我正在使用HTML设计模式制作一个非常定制的编辑器。在一种情况下,我希望按键的默认操作在按一次实际键时完成两次。在本例中,我指的是向下键(keycode40)。按那个键时,我想跳过一行,把光标放在( |

    First li|ne
    Second line
    The third line
    

    First line
    Second line
    The third| line
    

    2 回复  |  直到 14 年前
        1
  •  2
  •   Tim Down    14 年前

    你不可能用明智的方式来做这件事。在非IE浏览器中以编程方式移动插入符号的唯一方法是使用浏览器的 Selection 对象,该对象没有模拟向下箭头键的机制。

        2
  •  0
  •   Community CDub    7 年前

    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(),并使用它将光标向下移动两行。

    很显然不是,但应该有用。