Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/03/2012, 12:14
ljbautista
 
Fecha de Ingreso: junio-2010
Ubicación: Puebla, Pue.
Mensajes: 70
Antigüedad: 14 años, 5 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.