Vean esto. Formulario para validar RUT.

Battlecat
15 de Octubre del 2003
Hola a todos
Aquí les envío un código de obsequio. Está todo detallado, y si algo no está claro, hacedme las consultas por el foro ;-)

--------------------------------------------------
<html><head><title>Comprobar RUT</title>
<script language="javascript">
// Para mis amigos de programacion.net ;-)
// de Battlecat
// Ejemplo: RUT = 12.345.678-9

// * Variables del RUT *
// pnt1 = primer punto del RUT
// pnt2 = segundo punto del RUT
// aux = guardar el RUT ingresado porque la variable RUT, la descomponemos
//
// rut = cadena que descomponemos
// mls = cifra de millón (en este casi es 12 millones)
// mil = cifra de miles (en este caso es 345 miles)
// dcm = cifra de unidades (en este caso son 678 unidades)
// gun = guión. guardamos el caracter que se encuentra en el espacio
// donde debería ir el guión del RUT, y después vemos si
// efectivamente, es el caracter de guión (-)
// ext = extensión. Verificamos si la extensión del RUT (en este caso 9)
// está en el rango 1-9, o es igual a k o K)

// * Variables de comprobación *
// vof1 = comprueba si la variable mls, tiene un valor comprendido entre el
// rango 00-99. En caso de ser así, el valor de vof1 será "true". Al
// contrario, si es un carácter no numérico, tendrá el valor "false":
// vof2 = comprueba si pnt1 es igual al caracter -. Si es así, vof2 será igual
// a "true", en caso contrario, tendrá el valor "false".
// vof3 = comprueba si el valor de mls está entre el valor 0-999. De ser así,
// vof3 tendrá el valor "true", en caso de ser un valor no numérico
// vof3 sería "false".
// vof4 = comprueba si pnt2 es igual al caracter-. Si es así, vof4 será igual
// a "true", en caso contrario, tendrá el valor "false".
// vof5 = comprueba si el valor de la variable dcm, está entre el rango 0-999.
// de ser así, vof5 sería "true". Si dcm tiene un valor no numérico,
// vof5 será "false".
// vof6 = comprueba si el caracter número 11 del RUT, es igual al caracter -.
// Si es así, vof6 valdrá "true", si no es así, vof6 valdrá "false".
// vof7 = comprueba si la variable ext, tiene un valor comprendido entre en
// rango 1-9, si no es así, comprueba si la extensión tiene el valor
// del caracter k o K.

function valida()
{
rut = document.form1.rut.value;
aux = rut;
mls = rut.substring(0,2); // mis = 12
rut = rut.substring(2);
pnt1 = rut.substring(0,1); // pnt1 = '.'
rut = rut.substring(1);
mil = rut.substring(0,3); // mil = 345
rut = rut.substring(3);
pnt2 = rut.substring(0,1); // pnt2 = '.'
rut = rut.substring(1);
dcm = rut.substring(0,3); // dcm = 678
rut = rut.substring(3);
gun = rut.substring(0,1); // gun = '-'
rut = rut.substring(1);
ext = rut.substring(0,1); // ext = 9

vof1 = (mls>=00 && mls<=99);
vof2 = (pnt1=='.');
vof3 = (mil>=0 && mil<=999);
vof4 = (pnt2=='.');
vof5 = (dcm>=0 && dcm<=999);
vof6 = (gun='-');
vof7 = (ext>=1 || ext=='k' || ext=='K');
tof = (vof1 && vof2 && vof3 && vof4 && vof5 && vof6 && vof7);
if(!tof){alert('Error: El RUT '+aux+' no es válido.');return false;}
else{alert('Gracias: El RUT se ha ingresado correctamente.');return true;}
}
</script></head>

<body>
<form name="form1">
<input name="rut" maxlength="12">
<input type="button" value="Validar" onclick="valida()">
</form></body></html>
--------------------------------------------------

Cuídense mucho
Saludos a todo el foro
Atte Battlecat (Chile)

janox
15 de Octubre del 2003
compadre este programa esta bueno pero si me puedes ayudar te lo agradeceria caleta.Es lo mismo que esto pero en vez de validar tiene que entregar el digito, porfa respondeme

psepulveda
15 de Octubre del 2003
codigo validar rut

jta
15 de Octubre del 2003
como lo puedo hacer sin ingresarle los puntos o sea 02258963-1.. que trato y no puedo hacerlo ...muchas gracias

Khriztian
15 de Octubre del 2003
Chequeen este Programa :

<html>
<head>
<script language="javascript">
function validar(formulario)
{

rut=formulario.rut.value;
var count=0;
var count2=0;
var factor=2;
var suma=0;
var sum=0;
var digito=0;
count2=rut.length - 1;

while(count < rut.length)
{

sum = factor * (parseInt(rut.substr(count2,1)));
suma = suma + sum;
sum=0;

count = count + 1;
count2 = count2 - 1;
factor = factor + 1;

if(factor > 7)
{
factor=2;
}

}

digito= 11 - (suma % 11)

if(digito==11)
{
digito=0;
}

if(digito==10)
{
digito="k";
}

if(digito==formulario.dig.value)
{
alert("Digito Verificador Coincide !!");
}
else
{
alert("Digito Verificador No Coincide !!");
}


}
</script>
</head>
<body onload="form.rut.focus(), form.rut.value='', form.dig.value=''" >
<center>
<form name="form">
<h2><b> Validar RUT </b></h2>
<input type="text" name="rut" size="9" maxlength="8"> - <input type="text" name="dig" size="1" maxlength="1"><br><br><br>
<input type="button" onclick="validar(this.form)" value="Validar Rut">

</form>
</center>
</body>
</html>

yo2
15 de Octubre del 2003
Hola Battlecat, gracias por el codigo que nos obsequiastes, lo he probado, pero no me acepta los rut que cominzan con una cifra, es decir,1.xxx.xxx-x, me lo acepta de esta manera 01.xxx.xxx-x, puedes ddecirme que se debe cambiar para arreglarlo, ya que los cambios que he hecho no me han funcionado bien del todo.

Saludos y gracias

yo2