|    
			
				11/01/2006, 15:00
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: diciembre-2005 Ubicación: Ciudad de México 
						Mensajes: 45
					 Antigüedad: 19 años, 10 meses Puntos: 1 |  | 
  |  Restricción de inputs de texto  
  Estoy realizando una serie de funciones para restringir a usuarios a que solo puedan meter ciertos caracteres, tengo hasta ahora cuatro tipo de restricciones de las cuales tres funcionan bien. La cuarta restriccioón no funciona bien pues el argumento que recibe no lo recibe como referencia sino por valor, la pregunta es si alguién me puede ayudar a que eso funcione.
 
 Solo me falta mencionar que el código no sirve en IE, para eso también sigo trabajando.
 
 
 
 
 <html>
 <head>
 <script>
 
 //*********************************funciones de validación*********************************
 //este método valida que solo contenga texto un campo
 objVal=new Array();
 function validaTexto(){
 this.cadena=document.getElementById(this.campo).va  lue;
 respuesta=false;
 expReg=new RegExp("^[a-z\ \á-\ú\ü\Ü\Á-\Ú]+$","gi");
 if(expReg.test(this.cadena))
 respuesta=true;
 return respuesta;
 }
 
 //este método valida que un campo solo contenga texto sin espacios
 function validaTextoSE(){
 this.cadena=document.getElementById(this.campo).va  lue;
 respuesta=false;
 expReg=new RegExp("^[a-z\á-\ú\ü\Ü\Á-\Ú]+$","gi");
 if(expReg.test(this.cadena))
 respuesta=true;
 return respuesta;
 }
 
 //este método valida que sun campo solo contenga números enteros
 function validaEntero(){
 this.cadena=document.getElementById(this.campo).va  lue;
 respuesta=false;
 expReg=new RegExp("^[0-9]+$","gi");
 if(expReg.test(this.cadena))
 respuesta=true;
 return respuesta;
 }
 
 //este método verifica que un campo contenga, ya sea números enteros o de punto flotante
 function validaFlotante(){
 this.cadena=document.getElementById(this.campo).va  lue;
 respuesta=false;
 expReg=new RegExp("^[0-9]+(.[0-9]+)?$","gi");
 if(expReg.test(this.cadena))
 respuesta=true;
 expReg=new RegExp("[\ -\-]|\/|[\:-\~]","gi");
 if(expReg.test(this.cadena))
 return false;
 return respuesta;
 }
 
 //************************************Métodos varios***************************************
 
 function vacio(){//comprueba si el campo no esta vacío
 expReg=new RegExp("[\!-\~]+","gi");
 if(expReg.test(this.cadena))
 return true;
 else
 return false;
 }
 
 function mensaje(){//genera un mensaje seguún el tipo de campo y el estado del mismo
 this.cadena=document.getElementById(this.campo).va  lue;
 noVacio=this.vacio();
 if(this.valida())
 return;
 else{
 if((!noVacio)&&(this.requerido==1||this.tipo==0)){
 cadenaMensaje="El campo "+this.texto+" es un campo requerido favor de llenarlo";
 document.getElementById(this.campo).focus();
 }
 else{
 if(noVacio){
 if(this.tipo==1)
 cadenaMensaje="El campo "+this.texto+" solo acepta texto";
 if(this.tipo==2)
 cadenaMensaje="El campo "+this.texto+" solo acepta texto sin espacios";
 if(this.tipo==3)
 cadenaMensaje="El campo "+this.texto+" solo acepta números enteros";
 if(this.tipo==4)
 cadenaMensaje="El campo "+this.texto+" solo acepta números";
 }
 else
 return;
 }
 alert(cadenaMensaje);
 document.getElementById(this.campo).focus();
 }
 }
 
 //******************************Constructor de la clase CampoVal***************************
 //esta clase conjunta los atributos y métodos necesarios para hacer validaciones
 function CampoVal(campo,tipo,texto,requerido){
 if(campo==1)
 return;
 this.cadena=document.getElementById(campo).value;
 this.campo=campo;
 this.tipo=tipo;
 this.texto=texto;
 this.requerido=requerido;
 if(this.tipo==0){
 this.valida=vacio;
 this.bloquea=noBloquea;
 }
 if(this.tipo==1){
 this.valida=validaTexto;
 this.bloquea=soloTexto;
 }
 if(this.tipo==2){
 this.valida=validaTextoSE;
 this.bloquea=soloTextoSE;
 }
 if(this.tipo==3){
 this.valida=validaEntero;
 this.bloquea=soloEnteros;
 }
 if(this.tipo==4){
 this.valida=validaFlotante;
 this.bloquea=soloNumeros;
 }
 this.mensaje=mensaje;
 this.vacio=vacio;
 }
 
 /*x=new CampoVal("prueba1",1,"Prueba1",0);
 onkeypress=x.bloquea;*/
 
 //********************************funciones de Bloqueo*************************************
 //esta funcion solo permite que se ingrese texto en un campo
 function soloTexto(e){
 expReg=new RegExp("^[a-z\ \á-\ú\ü\Ü\Á-\Ú]$","gi");
 var caracter=e.which;
 if(caracter<=10)
 return true;
 if(!(expReg.test(String.fromCharCode(caracter)))){
 alert("Este campo solo acepta TEXTO!");
 return false;
 }
 }
 
 //esta funcion solo permite que se ingrese texto sin espacios en un campo
 function soloTextoSE(){
 expReg=new RegExp("^[a-z\á-\ú\ü\Ü\Á-\Ú]$","gi");
 var caracter=e.which;
 if(caracter<=10)
 return true;
 if(!(expReg.test(String.fromCharCode(caracter)))){
 alert("Este campo solo acepta TEXTO SIN ESPACIOS!");
 return false;
 }
 }
 
 //este método solo permite que se ingresen números enteros en un campo
 function soloEnteros(){
 expReg=new RegExp("^[0-9]$","gi");
 var caracter=e.which;
 if(caracter<=10)
 return true;
 if(!(expReg.test(String.fromCharCode(caracter)))){
 alert("Este campo solo acepta NÚMEROS ENTEROS!");
 return false;
 }
 }
 
 //este método solo permite que se ingresen números, ya sean enteros o de punto flotante
 //n un campo.
 function soloNumeros(e){
 this.cadena=document.getElementById(this.campo).va  lue;
 expReg1=new RegExp("[.]","gi");
 if(expReg1.test(this.cadena))
 expReg=new RegExp("^[0-9\c127]$","gi");
 else
 expReg=new RegExp("^[0-9.]$","gi");
 var caracter=e.which;
 if(caracter<=10)
 return true;
 if(!(expReg.test(String.fromCharCode(caracter)))){
 alert("Este campo solo acepta NÚMEROS!");
 return false;
 }
 }
 
 //este método no hace nada
 function noBloquea(){
 }
 </script>
 </head>
 
 <body bgcolor="Maroon">
 <input type="text" id="prueba"  name="prueba" onfocus="x=new CampoVal('prueba',1,'Prueba',0);" onkeypress="onkeypress=x.bloquea;" onblur="x.mensaje();">
 <input type="text" id="prueba1"  name="prueba1" onfocus="x=new CampoVal('prueba1',4,'Prueba1',0);" onkeypress="x.bloquea(event);"  onblur="x.mensaje();">
 <input type="button" name="Valida" value="Valida">
 </body>
 
 </html>
     |