Código Javascript:
Ver original
function permite(elEvento, permitidos) { // Variables que definen los caracteres permitidos var numeros = "0123456789"; var caracteres = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ"; var numeros_caracteres = numeros + caracteres; var teclas_especiales = [8, 37, 39, 46]; // 8 = BackSpace, 46 = Supr, 37 = flecha izquierda, 39 = flecha derecha // Seleccionar los caracteres a partir del parámetro de la función switch(permitidos) { case 'num': permitidos = numeros; break; case 'car': permitidos = caracteres; break; case 'num_car': permitidos = numeros_caracteres; break; } // Obtener la tecla pulsada var evento = elEvento || window.event; var codigoCaracter = evento.charCode || evento.keyCode; var caracter = String.fromCharCode(codigoCaracter); // Comprobar si la tecla pulsada es alguna de las teclas especiales // (teclas de borrado y flechas horizontales) var tecla_especial = false; for(var i in teclas_especiales) { if(codigoCaracter == teclas_especiales[i]) { tecla_especial = true; break; } } // Comprobar si la tecla pulsada se encuentra en los caracteres permitidos // o si es una tecla especial return permitidos.indexOf(caracter) != -1 || tecla_especial; }
La función anterior sirve para recibir solo números, solo caracteres o ambas.
Código HTML:
Ver original
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.