Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/06/2002, 09:55
Avatar de Sir Matrix
Sir Matrix
 
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: Dígito verificador del RUT

Hola, yo tengo uno que me dió Bakanzzip hace unos días, pero es en JavaScript, quizás te sirva:
Código:
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>

<head>
<script>
function quitaFormatoRut(strVal)

{
var strTmp = ''
var i;

if (strVal.charAt(0) =='0') {
for ( i=1; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);
}
else
for ( i=0; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);


return strTmp;
}

function validaDV( strDV )

	{
		dv = strDV + ""
		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')
			return false;
	  
		return true;
	}




function chequeaDV(thisRut)

	{		
		
		var strRut = quitaFormatoRut(thisRut.value);
		var i;
		
		if (thisRut.value =="")
			return false;
			
		largo = strRut.length;
		
		if ( largo < 2 )
		{
			alert("Debe ingresar el rut completo")
			thisRut.focus();
			thisRut.select();
			return false;
		}

		if ( largo > 2 )
			strRutSD = strRut.substring(0, largo - 1);
		else
			strRutSD = strRut.charAt(0);
			
		strDv = strRut.charAt(largo-1);
		if (!validaDV( strDv ))
		{
			alert("Su digito validador del rut " + thisRut.value + " es incorrecto")
			thisRut.focus();
			thisRut.select();
			return false
		}

		if ( strRutSD == null || strDv == null )
		    return 0

		var dvr = '0'

		intSuma = 0
		intFactor  = 2

		for (i= strRutSD.length -1 ; i >= 0; i--)
		{
			intSuma = intSuma + strRutSD.charAt(i) * intFactor
			if (intFactor == 7)
				intFactor = 2
			else    
				intFactor++
		}


		intResto = intSuma % 11
		if (intResto == 1)
			dvr = 'k'
		else if (intResto == 0)
			dvr = '0<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>

<head>
<script>
function quitaFormatoRut(strVal)

{
var strTmp = ''
var i;

if (strVal.charAt(0) =='0') {
for ( i=1; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);
}
else
for ( i=0; i < strVal.length ; i++ )
if ( strVal.charAt(i) != ' ' && strVal.charAt(i) != '.' && strVal.charAt(i) != '-' && strVal.charAt(i) != ',' )
strTmp = strTmp + strVal.charAt(i);


return strTmp;
}

function validaDV( strDV )

	{
		dv = strDV + ""
		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')
			return false;
	  
		return true;
	}




function chequeaDV(thisRut)

	{		
		
		var strRut = quitaFormatoRut(thisRut.value);
		var i;
		
		if (thisRut.value =="")
			return false;
			
		largo = strRut.length;
		
		if ( largo < 2 )
		{
			alert("Debe ingresar el rut completo")
			thisRut.focus();
			thisRut.select();
			return false;
		}

		if ( largo > 2 )
			strRutSD = strRut.substring(0, largo - 1);
		else
			strRutSD = strRut.charAt(0);
			
		strDv = strRut.charAt(largo-1);
		if (!validaDV( strDv ))
		{
			alert("Su digito validador del rut " + thisRut.value + " es incorrecto")
			thisRut.focus();
			thisRut.select();
			return false
		}

		if ( strRutSD == null || strDv == null )
		    return 0

		var dvr = '0'

		intSuma = 0
		intFactor  = 2

		for (i= strRutSD.length -1 ; i >= 0; i--)
		{
			intSuma = intSuma + strRutSD.charAt(i) * intFactor
			if (intFactor == 7)
				intFactor = 2
			else    
				intFactor++
		}


		intResto = intSuma % 11
		if (intResto == 1)
			dvr = 'k'
		else if (intResto == 0)
			dvr = '0'
		else
		{
			dvi = 11 - intResto
			dvr = dvi + ""
		}
		
		
		if ( dvr != dv.toLowerCase() )
		{
			alert("EL rut " + thisRut.value + " es incorrecto")
			thisRut.focus();
			thisRut.select();
			return false
		}

		return true

	}

 	function formateaRut(thisRut)

	{  
		var tmpstr = "";
		var strRut = thisRut.value
		var i
		
		//alert(thisRut.value)
		if (thisRut.value == "")
			return false;
		for ( i=0; i < strRut.length ; i++ )
			if ( strRut.charAt(i) != ' ' && strRut.charAt(i) != '.' && strRut.charAt(i) != '-' )
				tmpstr = tmpstr + strRut.charAt(i);
		strRut = tmpstr;
		largo = strRut.length;

		if ( largo < 2 )
		{
			alert("Debe ingresar el rut completo");
			thisRut.focus();
			thisRut.select();
			return false;
		}


		for (i=0; i < largo ; i++ )
		{ 
			if ( strRut.charAt(i) !="0" && strRut.charAt(i) != "1" && strRut.charAt(i) !="2" && strRut.charAt(i) != "3" && strRut.charAt(i) != "4" && strRut.charAt(i) !="5" && strRut.charAt(i) != "6" && strRut.charAt(i) != "7" && strRut.charAt(i) !="8" && strRut.charAt(i) != "9" && strRut.charAt(i) !="k" && strRut.charAt(i) != "K" ) 
			{
				alert("El valor ingresado no corresponde a un R.U.T valido");
				thisRut.focus();
				thisRut.select();
				return false;
			}
		}


		var invertido = "";

		for ( i=(largo-1),j=0; i>=0; i--,j++ )
		  invertido = invertido + strRut.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);


		thisRut.value = invertido;  

		if ( validaDV(strRut) )
			return true;
			
		return false; 
	}
	
	
</script>
<title>Pagina de Pruebas</title>
</head>

<body>


	<table border=0 align=right width=180>
	<tr>
		<td bgcolor=orange><font face=verdana size=1>Rut </font></td>
		<td bgcolor=orange><font face=verdana size=1><INPUT type="text" id=text1 name=rut onchange="formateaRut(this); chequeaDV(this);" maxlength=15 size=12></font></td>
	</tr>
	</table>



</body>
</html>
<img src="http://www.artereal.com/cerrado3.gif"> <font size="1" color="#808080">[I]Un verdadero signo de un buen hombre es si ama a su padre y madre.[/CODE]