Tengo:
$(someTextInputField).keypress(function() {
alert($(this).val());
});
Ahora la alerta siempre devuelve el valor ANTES de presionar la tecla (por ejemplo, el campo está vacío, escribo 'a' y la alerta me da ''. Luego escribo 'b' y la alerta me da 'a' ...). Pero quiero el valor DESPUÉS de presionar la tecla, ¿cómo puedo hacer eso?
Fondo: me gustaría habilitar un botón tan pronto como el campo de texto contenga al menos un carácter. Entonces ejecuto esta prueba en cada evento de pulsación de tecla, pero usando el valor devuelto () el resultado siempre está un paso atrás. Usar el evento change () no es una opción para mí porque entonces el botón está deshabilitado hasta que salga del cuadro de texto. Si hay una mejor manera de hacerlo, ¡me alegra escucharlo!
javascript
jquery
events
forms
javascript-events
Jörg Brenninkmeyer
fuente
fuente
Respuestas:
Cambiar
keypress
akeyup
:keypress
se dispara cuando se presiona la tecla,keyup
se dispara cuando se suelta la tecla.fuente
Sorprendido de que nadie mencionó el evento js "input":
Recomendado.
https://developer.mozilla.org/en-US/docs/Web/Events/input
fuente
en lugar de presionar una tecla, use keyup .
fuente
Alternativamente, puede usar el evento keydown con un tiempo de espera de 0.
De esa manera, los cambios se aplicarán instantáneamente, en lugar de aplicarse cuando el usuario deje de presionar la tecla.
fuente
Es posible que desee conectar un
onchange
controlador de eventos en lugar de utilizar cualquiera de los eventos clave.Usar
Edit > Paste
o un clic derecho y luego Pegar disparará un evento de cambio, pero no un evento clave. Tenga en cuenta que algunos navegadores pueden simular un evento clave en una pasta (aunque no conozco ninguno), pero no puede contar con ese comportamiento.fuente
Intente algo como esto:
Eso simplemente introduce un tiempo de espera para que después de que se complete el ciclo de eventos de "pulsación de tecla", su código se ejecutará casi inmediatamente después. Un intervalo de tiempo tan corto (incluso si el navegador lo redondea) no se notará.
edit - o podría usar "keyup" como dicen todos los demás, aunque su semántica es diferente.
fuente