Javascript 以编程方式按下“按钮”;“左”;输入文本

Javascript 以编程方式按下“按钮”;“左”;输入文本,javascript,dom-events,Javascript,Dom Events,我试图以编程方式触发一个关键事件,使其在文本框中向左移动,但没有任何运气 输入元素具有焦点,光标位于末尾。我试图通过编程方式让光标向左移动一步,在字母“F”*之前,通过相应的击键触发键盘事件(keydown/keypup/keypress)← 或→ 针对输入框 ABCDEF| 以下是迄今为止的代码: HTML 如果您想查看整个代码,请在JSFIDLE上保存一个快速演示- 我对制作这个跨浏览器不感兴趣(只是让它在Chrome中工作) 对于那些不将jQuery视为解决一切问题的解决方案的人:) 从

我试图以编程方式触发一个关键事件,使其在文本框中向左移动,但没有任何运气

输入元素具有焦点,光标位于末尾。我试图通过编程方式让光标向左移动一步,在字母“F”*之前,通过相应的击键触发键盘事件(keydown/keypup/keypress)← 或→ 针对输入框

ABCDEF|

以下是迄今为止的代码:

HTML

如果您想查看整个代码,请在JSFIDLE上保存一个快速演示-


我对制作这个跨浏览器不感兴趣(只是让它在Chrome中工作)

对于那些不将jQuery视为解决一切问题的解决方案的人:)

其中“输入”是您的文本区域

37-左
38-向上
39-右
40-向下

因此,当您记录“事件”时,您会记录按下的键的值。
我相信你已经想出了一个办法,但以防万一,这里有一个我将如何解决它的想法:

var keysPressed = new Array(); // somewhere in the global scope
$("input").keydown(function (e) {
    keysPressed.push(e.which); //adding values to the end of array
});

希望这有帮助

据我所知,您可以:

var pos = document.getElementById("a").length; 
document.getElementById("a").setSelectionRange(pos-1, pos-1);

想要-1,因为jQuery:P不够,但是说真的-谢谢你的解决方案。我可以移动插入符号,但我想知道是否可以通过触发键盘事件(如“keydown/keypup/keypress”)来实现。原因是,我正在编写一个脚本来重播用户操作,如果我可以记录所有事件对象,并在以后分派它们,这就变得很简单了。这比在重播时尝试将每个事件映射到适当的操作/函数要简单得多← 或→ 键映射到移动插入符号的内容。-1没有回答如何将事件发送到文本输入的问题。该示例仅用于将光标定位到某个特定位置,而不是如何正确创建事件以及如何让浏览器处理它。@Aaron,当我回答这个问题时,可以解释为“如何向左移动光标”,这是一个非常有效的答案。感谢@Raine的解决方案。我用你的代码尝试了一个基本的例子,但没有任何运气。
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();
        }
    }
}
e = jQuery.Event("keydown"); // define this once in global scope
e.which = 37; // Some key value
$("input").trigger(e);
var keysPressed = new Array(); // somewhere in the global scope
$("input").keydown(function (e) {
    keysPressed.push(e.which); //adding values to the end of array
});
var pos = document.getElementById("a").length; 
document.getElementById("a").setSelectionRange(pos-1, pos-1);