Foros del Web » Programando para Internet » Javascript »

Restringir inputs dinámicos para recibir solo números enteros!

Estas en el tema de Restringir inputs dinámicos para recibir solo números enteros! en el foro de Javascript en Foros del Web. Hola que tal, pues estoy tratando de restringir unos input para que solo puedan recibir números, encontré una funciona que lo hace mas o menos: ...
  #1 (permalink)  
Antiguo 05/03/2012, 12:14
 
Fecha de Ingreso: junio-2010
Ubicación: Puebla, Pue.
Mensajes: 70
Antigüedad: 13 años, 10 meses
Puntos: 1
Restringir inputs dinámicos para recibir solo números enteros!

Hola que tal, pues estoy tratando de restringir unos input para que solo puedan recibir números, encontré una funciona que lo hace mas o menos:

Código Javascript:
Ver original
  1. function permite(elEvento, permitidos) {
  2.   // Variables que definen los caracteres permitidos
  3.   var numeros = "0123456789";
  4.   var caracteres = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
  5.   var numeros_caracteres = numeros + caracteres;
  6.   var teclas_especiales = [8, 37, 39, 46];
  7.   // 8 = BackSpace, 46 = Supr, 37 = flecha izquierda, 39 = flecha derecha
  8.  
  9.  
  10.   // Seleccionar los caracteres a partir del parámetro de la función
  11.   switch(permitidos) {
  12.     case 'num':
  13.       permitidos = numeros;
  14.       break;
  15.     case 'car':
  16.       permitidos = caracteres;
  17.       break;
  18.     case 'num_car':
  19.       permitidos = numeros_caracteres;
  20.       break;
  21.   }
  22.  
  23.   // Obtener la tecla pulsada
  24.   var evento = elEvento || window.event;
  25.   var codigoCaracter = evento.charCode || evento.keyCode;
  26.   var caracter = String.fromCharCode(codigoCaracter);
  27.  
  28.   // Comprobar si la tecla pulsada es alguna de las teclas especiales
  29.   // (teclas de borrado y flechas horizontales)
  30.   var tecla_especial = false;
  31.   for(var i in teclas_especiales) {
  32.     if(codigoCaracter == teclas_especiales[i]) {
  33.       tecla_especial = true;
  34.       break;
  35.     }
  36.   }
  37.  
  38.   // Comprobar si la tecla pulsada se encuentra en los caracteres permitidos
  39.   // o si es una tecla especial
  40.   return permitidos.indexOf(caracter) != -1 || tecla_especial;
  41. }


La función anterior sirve para recibir solo números, solo caracteres o ambas.

Código HTML:
Ver original
  1. // Sólo números
  2. <input type="text" id="texto" onkeypress="return permite(event, 'num')" />
  3.  
  4. // Sólo letras
  5. <input type="text" id="texto" onkeypress="return permite(event, 'car')" />
  6.  
  7. // Sólo letras o números
  8. <input type="text" id="texto" onkeypress="return permite(event, 'num_car')" />

En mi caso solo me interesa le de números, pero tiene un detalle, restringe bien a excepción del punto '.' y el carácter de porcentaje '%' ya ya intente modificarlo pero sigue ignorando esos dos caracteres :S

Lo intente con JQuery, pero el problema es que los inputs que tengo que validar son dinámicos y los ids de los inputs cambian :S

Ojala puedan ayudarme, saludos.
  #2 (permalink)  
Antiguo 05/03/2012, 18:01
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: Restringir inputs dinámicos para recibir solo números enteros!

Buscando un poco en Google, encontré esta función:

Código Javascript:
Ver original
  1. <!--
  2.         function isNumberKey(evt)
  3.         {
  4.          var charCode = (evt.which) ? evt.which : event.keyCode
  5.          if (charCode > 31 && (charCode < 48 || charCode > 57))
  6.             return false;
  7.  
  8.          return true;
  9.         }
  10.     //-->

Me gustó por su simpleza. Acá un ejemplo:

Código HTML:
Ver original
  1. <!doctype html>
  2.     <script type="text/javascript">
  3.     <!--
  4.         function isNumberKey(evt)
  5.         {
  6.          var charCode = (evt.which) ? evt.which : event.keyCode
  7.          if (charCode > 31 && (charCode < 48 || charCode > 57))
  8.             return false;
  9.  
  10.          return true;
  11.         }
  12.     //-->
  13.     </script>
  14.    
  15. </head>
  16. <input id="text" name="text" onkeypress="return isNumberKey(this);" />
  17. </body>
  18. </html>
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 07/03/2012, 16:12
 
Fecha de Ingreso: junio-2010
Ubicación: Puebla, Pue.
Mensajes: 70
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Restringir inputs dinámicos para recibir solo números enteros!

Muy bueno Naahuel, lo probe y funciona de maravilla y como bien dices de una gran simpleza xD
Mil gracias ;)

Etiquetas: dinamicos, inputs, numericos, restriccion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:55.