Foros del Web » Programando para Internet » Javascript »

problema con codigo

Estas en el tema de problema con codigo en el foro de Javascript en Foros del Web. hola a todos me atrevo a pedirles ayuda ya que no he podido encontrarle una solucion al problema. Tengo un codigo de validacion de rut(codigo ...
  #1 (permalink)  
Antiguo 18/08/2008, 02:20
Avatar de fbirrer  
Fecha de Ingreso: enero-2006
Ubicación: Santiago de Chile
Mensajes: 329
Antigüedad: 18 años, 4 meses
Puntos: 0
problema con codigo

hola a todos

me atrevo a pedirles ayuda ya que no he podido encontrarle una solucion al problema.

Tengo un codigo de validacion de rut(codigo de persona en Chile) y en distintos input tipo text, en el evento onblur, llamo a esta validacion.

El problema es que cuando este "rut" sea inválido que no salga de este input.

Gracias, les coloco el código.



Código HTML:
<input name="USUARIO" type="text" id="USUARIO" size="32" onblur="Javascript:ValidaRut(this.name);" > 
Código HTML:
function revisarDigito( dvr )
{	
	dv = dvr + ""	
	if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K')	
	{		
		alert("Debe ingresar un digito verificador valido");		
	alert("2");
		// window.document.form1.rut.focus();		
		// window.document.form1.rut.select();		
		return false;	
	}	
	return true;
}

function revisarDigito2( crut )
{	
	largo = crut.length;	
	if ( largo < 2 )	
	{	
		//alert(largo);	
		if (largo!==0)	{
			//alert(largo);
			alert("Debe ingresar el rut completo")		
			// window.document.form1.rut.focus();		
			// window.document.form1.rut.select();		
		}
		return false;	
	}	
	if ( largo > 2 )		
		rut = crut.substring(0, largo - 1);	
	else		
		rut = crut.charAt(0);	
	dv = crut.charAt(largo-1);	
	revisarDigito( dv );	

	if ( rut == null || dv == null )
		return 0	

	var dvr = '0'	
	suma = 0	
	mul  = 2	

	for (i= rut.length -1 ; i >= 0; i--)	
	{	
		suma = suma + rut.charAt(i) * mul		
		if (mul == 7)			
			mul = 2		
		else    			
			mul++	
	}	
	res = suma % 11	
	if (res==1)		
		dvr = 'k'	
	else if (res==0)		
		dvr = '0'	
	else	
	{		
		dvi = 11-res		
		dvr = dvi + ""	
	}
	if ( dvr != dv.toLowerCase() )	
	{		
		//alert("1");
		alert("EL rut es incorrecto");
		// window.document.form1.rut.focus();		
		// window.document.form1.rut.select();		
		return false	
	}

	return true
}

function ValidaRut(ControlRUT)
{
	//alert(ControlRUT);
//	var texto = document.all[ControlRUT].value;
	var texto = document.getElementById(ControlRUT).value;
	var tmpstr = "";	
	for ( i=0; i < texto.length ; i++ )		
		if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
			tmpstr = tmpstr + texto.charAt(i);	
	texto = tmpstr;	
	largo = texto.length;	

	if ( largo < 2 )	
	{	
		//alert(largo);
		if (largo!==0)	{
			//alert(largo);
			alert("Debe ingresar el rut completo");
			// window.document.form1.rut.focus();		
			// window.document.form1.rut.select();	
			document.all[ControlRUT].value="";	
		}
		return false;	
	}	

	for (i=0; i < largo ; i++ )	
	{			
		if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9" && texto.charAt(i) !="k" && texto.charAt(i) != "K" )
 		{			
			alert("El valor ingresado no corresponde a un R.U.T valido");
			document.all[ControlRUT].value="";	
			// window.document.form1.rut.focus();			
			// window.document.form1.rut.select();			
			return false;		
		}	
	}	

	var invertido = "";	
	for ( i=(largo-1),j=0; i>=0; i--,j++ )		
		invertido = invertido + texto.charAt(i);	
	var dtexto = "";	
	dtexto = dtexto + invertido.charAt(0);	
	dtexto = dtexto + '-';	
	cnt = 0;	

	for ( i=1,j=2; i<largo; i++,j++ )	
	{			
		if ( cnt == 3 )		
		{			
			dtexto = dtexto + '.';			
			j++;			
			dtexto = dtexto + invertido.charAt(i);			
			cnt = 1;		
		}		
		else		
		{				
			dtexto = dtexto + invertido.charAt(i);			
			cnt++;		
		}	
	}	

	invertido = "";	
	for ( i=(dtexto.length-1),j=0; i>=0; i--,j++ )		
		invertido = invertido + dtexto.charAt(i);	

//	document.all[ControlRUT].value = invertido.toUpperCase()		
	document.getElementById(ControlRUT).value = invertido.toUpperCase()		

	if ( revisarDigito2(texto) ){
		alert("pasa por aca 2");
		return true;
	}else{
		
		//document.getElementById(ControlRUT).focus();
	}
		
	

	//document.all[ControlRUT].value="";
	return false;
}
__________________
Desde Santiago de Chile
Grupo Universite
Información sobre los Institutos Chilenos de Educación
www.universite.cl
  #2 (permalink)  
Antiguo 18/08/2008, 06:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: problema con codigo

¿No es mejor validar al momento de enviar el formulario?. Y si algún campo es incorrecto, enviarle el foco con el método focus().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 18/08/2008, 07:08
Avatar de fbirrer  
Fecha de Ingreso: enero-2006
Ubicación: Santiago de Chile
Mensajes: 329
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: problema con codigo

Cita:
Iniciado por David el Grande Ver Mensaje
¿No es mejor validar al momento de enviar el formulario?. Y si algún campo es incorrecto, enviarle el foco con el método focus().
tu te refieres al enviar hacer un post y/o get??
__________________
Desde Santiago de Chile
Grupo Universite
Información sobre los Institutos Chilenos de Educación
www.universite.cl
  #4 (permalink)  
Antiguo 18/08/2008, 07:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: problema con codigo

Me refiero a que puedes usar el evento onsubmit del formulario para las validaciones .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:59.