Estoy intentando hacer una validación de información en contra de la entrada de texto del usuario en el proceso del evento keydown
. La razón por la que estoy tratando de validar en el evento keydown
es porque no quiero mostrar los caracteres que se consideran ilegales en el cuadro input
al comienzo.JavaScript: validación de entrada en el evento Keydown
La validación estoy escribiendo es así,
function validateUserInput(){
var code = this.event.keyCode;
if ((code<48||code>57) // numerical
&&code!==46 //delete
&&code!==8 //back space
&&code!==37 // <- arrow
&&code!==39) // -> arrow
{
this.event.preventDefault();
}
}
puedo seguir así, sin embargo estoy viendo inconvenientes en esta aplicación. Esos son, por ejemplo:
- La declaración condicional se hace cada vez más larga cuando pongo más condiciones para examinar.
keyCodes
pueden ser diferentes para los navegadores.- No solo debo verificar lo que no es legal, sino también verificar qué son excepcionales. En los ejemplos anteriores, eliminar, retroceso y teclas de flecha son excepcionales.
Pero la característica que no quiero perder es no tener que mostrar la entrada en el textarea
a menos que pase la validación. (En caso de que el usuario intente poner caracteres ilegales en el textarea
, no debería aparecer nada en absoluto) Es por eso que no estoy validando el evento keyup
.
Así que mi pregunta es:
- ¿Hay mejores maneras de validar la entrada en
keydown
caso de comprobarkeyCode
porkeyCode
? - ¿Hay otras maneras de capturar las entradas de usuario que no sean el evento
keydown
antes de que el navegador lo muestre? ¿Y una forma de ponerle la validación?
Gracias por la ayuda con antelación.
Sí, onkeypress funcionó muy bien. ¡Muchas gracias! – c4il