Estoy tratando de obtener el texto en un cuadro de texto mientras el usuario escribe en él ( jsfiddle playground ):
function edValueKeyPress() {
var edValue = document.getElementById("edValue");
var s = edValue.value;
var lblValue = document.getElementById("lblValue");
lblValue.innerText = "The text box contains: " + s;
//var s = $("#edValue").val();
//$("#lblValue").text(s);
}
<input id="edValue" type="text" onKeyPress="edValueKeyPress()"><br>
<span id="lblValue">The text box contains: </span>
El código se ejecuta sin errores, excepto que el valor del input text
cuadro, durante onKeyPress
es siempre el valor antes del cambio:
Pregunta : ¿Cómo obtengo el texto de un cuadro de texto durante
onKeyPress
?
Chatter adicional
Hay tres eventos relacionados con "el usuario está escribiendo" en el DOM HTML:
onKeyDown
onKeyPress
onKeyUp
En Windows , el orden de los WM_Key
mensajes se vuelve importante cuando el usuario mantiene presionada una tecla y la tecla comienza a repetirse:
WM_KEYDOWN('a')
- el usuario ha pulsado la AteclaWM_CHAR('a')
-a
se ha recibido un personaje del usuarioWM_CHAR('a')
-a
se ha recibido un personaje del usuarioWM_CHAR('a')
-a
se ha recibido un personaje del usuarioWM_CHAR('a')
-a
se ha recibido un personaje del usuarioWM_CHAR('a')
-a
se ha recibido un personaje del usuarioWM_KEYUP('a')
- el usuario ha soltado la Allave
Dará como resultado la aparición de cinco caracteres en un control de texto: aaaaa
Lo importante es que tú respondas al WM_CHAR
mensaje, el que se repite. De lo contrario, perderá eventos cuando se presione una tecla.
En HTML, las cosas son ligeramente diferentes:
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyDown
onKeyPress
onKeyUp
Html ofrece una KeyDown
y KeyPress
cada tecla repetida. Y el KeyUp
evento solo se genera cuando el usuario suelta la tecla.
Para llevar
- Yo puedo responder a
onKeyDown
oonKeyPress
, pero ambos todavía se levantan antes de que elinput.value
se ha actualizado - No puedo responder
onKeyUp
, porque no sucede cuando cambia el texto en el cuadro de texto.
Pregunta: ¿Cómo obtengo el texto de un cuadro de texto durante onKeyPress
?