Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/08/2006, 10:32
Avatar de pato_volador
pato_volador
 
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 7 meses
Puntos: 0
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...
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com

Última edición por pato_volador; 30/08/2006 a las 16:55 Razón: Me falto codigo... pato tonto...