Hola a todos.
Me sucede algo muy extraño con esta pequeña pieza de código que utilizo para validar los caracteres válidos de un campo. No es más que revisar que los campos numéricos sean solo números y los alfa solo alfa y así sucesivamente.
Código:
function formatoCampo(fld,e,t) {
// Variables
var aux = aux2 = '';
var i = j = 0;
var strCheck = null;
// solo numeros
if (t==1)
var strCheck = '0123456789';
// solo letras
if (t==2)
var strCheck = 'AaBbCcDdEeFfGgHhIiJjKkLlÑñNnMmOoPpQqRrSsTtUuVvWwXxYyZzáÁéÉíÍóÓúÚ ';
// telefonos
if (t==3)
var strCheck = '0123456789-ext';
// moneda & numerico con decimales
if (t==4)
var strCheck = '0123456789,.';
// Dimensiones (800x600)
if (t==5)
var strCheck = '0123456789x';
// Obtiene el codigo de la letra precionada
var whichCode = (window.Event) ? e.which : e.keyCode;
// Comienza la comprobación
if (whichCode == 13 || whichCode == 8)
return true; // Permitir Tecla Enter
if (t==4 && (whichCode == 44 || whichCode == 46))
return true; // Permitir Comas y puntos
if (whichCode == 0)
return true; // Permitir Tabulador
// Consigue el valor del codigo de tecla
key = String.fromCharCode(whichCode);
// Verifica el caracter con los seleccionados en strCheck
if (strCheck.indexOf(key) == -1)
return false;
// Retorna el caracter al campo
fld.value += aux2.charAt(i);
}
Para utilizarlo hay que colocar en los Input de tipo texto lo siguiente:
Código:
<input type="text" onKeyPress="return(formatoCampo(this,event,1))">
Eso por ejemplo validaría para que los campos sean de solo números.
Este código funciona perfectamente en todos los navegadores excepto IE8, y realmente no tengo idea de porque.
Gracias de antemano por cualquier ayuda que puedan prestarme.