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

以编程方式在文本输入中按“左”键

  •  7
  • Anurag  · 技术社区  · 15 年前

    我正试图以编程方式触发一个要在文本框中左移的关键事件,但没有任何运气。

    输入元素有焦点,光标在末尾。我试图让光标向左移动一步-在字母“F”*之前,以编程方式触发键盘事件(键向下/键向上/键按下),并针对输入框按相应的键或。

    ABCDEF

    到目前为止,代码如下:

    HTML

    <input id="a" type="text" />
    

    JavaScript

    var keyEvent = document.createEvent("KeyboardEvent");
    
    var keyLocation = '0x00';
    var keyIdentifier = "Left";
    
    keyEvent.initKeyboardEvent("keypress",
                            true,
                            true,
                            window,
                            keyIdentifier,
                            keyLocation,
                            false);
    
    $("a").dispatchEvent(keyEvent);
    

    如果您想查看整个代码,请在jfiddle上保存一个快速演示- http://jsfiddle.net/Vsafv/

    我不想做这个跨浏览器(只是让它在Chrome中工作)。谢谢你的帮助。

    4 回复  |  直到 15 年前
        1
  •  10
  •   hndcrftd    15 年前
    e = jQuery.Event("keydown"); // define this once in global scope
    e.which = 37; // Some key value
    $("input").trigger(e);
    

    其中“input”是您的文本区域

    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
    });
    

    希望这有帮助

        2
  •  8
  •   Sean Kinsey    15 年前

    对于那些不将jquery视为解决所有问题的解决方案的人来说:)

    http://blog.josh420.com/archives/2007/10/setting-cursor-position-in-a-textbox-or-textarea-with-javascript.aspx

    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();
            }
        }
    }
    
        3
  •  1
  •   Community CDub    8 年前

    您可以看看这个stackoverflow问题--gt; jQuery Set Cursor Position in Text Area

        4
  •  1
  •   Vestel    15 年前

    据我所知,你可以:

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