eventos event javascript javascript-events dom-events

javascript - event - Presione programáticamente la tecla "Izquierda" en una entrada de texto



javascript events list (4)

Y para aquellos que no ven jQuery como la solución a todo :)

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

Estoy intentando disparar un evento clave programáticamente para ir a la izquierda en un cuadro de texto, pero sin tener suerte.

El elemento de entrada tiene foco y el cursor está al final. Estoy tratando de hacer que el cursor se mueva un paso a la izquierda antes de la letra "F" * programáticamente activando un evento de Teclado (Keydown / KeyUp / KeyPress) con la correspondiente pulsación ← o → dirigida al cuadro de entrada.

ABCDEF |

Aquí está el código hasta ahora:

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

Guarde una demostración rápida en jsfiddle si desea ver el código completo - http://jsfiddle.net/Vsafv/

No estoy interesado en hacer este navegador cruzado (solo hacer que funcione en Chrome). Gracias por cualquier ayuda.


e = jQuery.Event("keydown"); // define this once in global scope e.which = 37; // Some key value $("input").trigger(e);

donde "input" es tu área de texto

37 - izquierda
38 - arriba
39 - derecha
40 - abajo

Entonces, cuando graba sus "eventos", registra los valores de las teclas presionadas.
Estoy seguro de que ya descubrió una forma de hacerlo, pero por las dudas, esta es una idea de cómo lo abordaría:

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

Espero que esto ayude


Por lo que puedo ver, puedes hacer:

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