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 :)
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);
Puede echar un vistazo a esta Pregunta de -> jQuery Establecer la posición del cursor en el área de texto