miércoles, 6 de agosto de 2008

Javascript: Permitir sólo el ingreso de números

Se da con frecuencia que tenemos un campo de texto en el cual queremos que sólo se puedan ingresar ciertos caracteres (En nuestro ejemplo sólo números y espacios).

A continuación les dejo el código para implementar esto.

//Esta funcion permite ingresar sólo valores numéricos y espacios en un campo numérico
//la invocación es: onkeypress="return validarNumericOnly(event);"
//Utiliza la función doBeep para generar una alerta al usuario cuando ingresa un valor incorrecto
function validarNumericOnly(e) {
var keyCode;
var returnVal = true;

if (window.event) {
e = window.event;
keyCode = e.keyCode;
}
//inicio=2 //fin= 3
//flechas izq= 29 //flechas der=28
//flechas up=30 //flechas down=31
//backspace=8 //supr=127
//espacio=32 //TAB=9

//TODOS LOS NÚMEROS y ESPACIO
if ((e.keyCode >= 48 && e.keyCode<= 57)){ returnVal = true; }else{ //FLECHAS+ESPACIO if ((e.keyCode >= 28 && e.keyCode<= 32)){ returnVal = true; }else{ //INICIO+FIN+BACKSPACE+SUPR+TAB if ((e.keyCode == 2 e.keyCode== 3 e.keyCode== 8 e.keyCode== 127 e.keyCode== 9)){ returnVal = true; }else{ //NO VALIDA returnVal = false; //hacer el Beep! doBeep(); } } } return returnVal; }

En otro post les publico el código para hacer el Beep!

6 comentarios:

Unknown dijo...

me ha sido de mucha ayuda tu post la verdad esta muy bueno pero en lo personla me ayudará mas agregando el punto para decimales, ya que como anuncias en el post funciona solamente para numeros y espacios, como puedo colocar los decimales?

rbedat dijo...

En el primer if "if ((e.keyCode >= 48 && e.keyCode<= 57))" se establece cuales son los caracteres validos. Si quieres que se permita el ingreso de puntos lo que debes hacer es agregar un "|| e.keyCode == 46" en el if. El 46 corresponde al codigo ascii del punto. Tener en cuenta que esto te permitiria ingresar secuencias como ..12..3.4, o sea yo tambien agregaria una validación de que el numero ingresado sea valido. Espero te sirva saludos.

Unknown dijo...

si me sirve y mucho gracias por tu pronta respuesta, estoy aplicando el siguiente codigo


solamente que no me jalo en ningun explorador lo coleque en el header y probe en body tambien pero no me funciono, lo que quiero es que en un imput que estoy trabajando pueda meter solamente cantidades numericas con dos decimales, es decir voy a ingresar montos de dinero "$1000.00", y al momento de que incluya cualquier otra cosa me lo diga solo quiero enteros, 2 decimales y el punto nada de comas ni nada mas

Unknown dijo...

shit!!!! no salio el codigo si tenes msn pasalo asi te lo muestro

rbedat dijo...

el código debes ponerlo dentro de las estiquetas script /script, igual me parece que para lo que quieres hacer lo mejor es hacer una validación con una expresión regular. en google podes encontrar muchos ejemplos de como validar un input con una expresion regular.

Unknown dijo...

ok gracias lo buscare entonces me has ayudado mucho en verdad.