Pues ya esta... despues de tanto buscar y buscar, pensar y pensar, y mucho cafe despues lo logré.... les agradesco su ayuda.
El problema era el siguiente:
Tengo una caja de texto, y solo debo permitir letras, numeros, punto y diagonal. Todo lo demas esta prohibido... se que con un simple "onKeyPress" se puede hacer, evaluando el codigo ASCII de la tecla presionada y si esta dentro del rango de letras y numeros o es el punto o la diagonal se permite, si no se borra, pero no me sirve usarlo asi pues mis usuarios son gente medio desesperada que si ven que no se escribe X caracter mandan todo a la porra, asi que el "sistemita" debe permitir que escribas todo lo que quieras y cuando te cambies de caja debe cambiar todas las letras acentuadas por su correspondiente si acento, y quitar todos los caracteres no permitidos, ha, y de paso cambiar todo a mayusculas para hacerle notar al usuario que el sistema esta corrigiendo lo que escribio.
Asi que... lo hice de la siguiente manera, lo pogno aqui por 2 motivos, uno por si a alguien le sirve, y dos por si alguien sabe una manera más optima de hacerlo, pues soy muy novato en javascript y quiero aprender mas.
Saludos a todos de este pato!!!
Código:
<script language="javascript" type="text/javascript">
function v28(texto, caja) //mi intento numero 28 jojojo....
{
texto=texto.replace(/(À|Á|Â|Ã|Ä|Å|Æ)/gi,'A'); // cambio las "A"s exoticas por "A"s sencillas mediante expresiones regulares
texto=texto.replace(/(È|É|Ê|Ë)/gi,'E'); //lo mismo con las "E" y resto de vocales y la "Ñ"
texto=texto.replace(/(Ì|Í|Î|Ï)/gi,'I');
texto=texto.replace(/(Ò|Ó|Ô|Ö)/gi,'O');
texto=texto.replace(/(Ù|Ú|Û|Ü)/gi,'U');
texto=texto.replace(/(Ñ)/gi,'N');
document.getElementById(caja).value = texto; //envio mi cadena cambiada a la caja...
longitud = texto.length; //tomo la longitud de la cadena contenida en la caja
patolin = new Array(); //creo un array llamado "patolin"
for (i=0; i<longitud; i++) //inicio un FOR que tenga como limite la longitud de mi cadena
{
patolin[i]=texto.charAt(i); //guardo cada caracter en una posicion del array
codigo_tecla=texto.charCodeAt(i); //obtengo el ASCII DECIMAL de el caracter...
if ((codigo_tecla < 48 || codigo_tecla > 57) && (codigo_tecla < 65 || codigo_tecla > 90) && (codigo_tecla < 96 || codigo_tecla > 122) && (codigo_tecla != 13) && (codigo_tecla != 44)&& (codigo_tecla != 45) && (codigo_tecla != 46) && (codigo_tecla != 47) && (codigo_tecla != 8) && (codigo_tecla != 16) && (codigo_tecla != 32)) //Si el codigo ASCII DECIMAL esta fuera de este rango...
{
patolin[i]=''; //cambiamos ese caracter por un nulo...
}
}
var textof=''; //declaro una cariable textof (texto final)
for (i=0;i<longitud;i++) //con otro FOR construyo la nueva cadena
{
textof=textof+patolin[i];
}
document.getElementById(caja).value=textof; //envio la cadena final a la caja...
}
// y listo!!!!
</script>
En el formulario tengo la caja asi:
Código HTML:
<form id="form1" name="form1" method="post" action="">
<p>
<input name="nombre" type="text" id="nombre" onblur="this.value=this.value.toUpperCase(); v28(this.value, this.name);"/>
</p>
</form>
Espero comentarios al respecto... y de nuevo gracias a todos...