Extendiendo Mootools para calcular el rut
Visita este artículo en http://www.estadobeta.com/2007/09/26/extendiendo-mootools-para-calcular-el-rut/
Por vladimir en artículos, javascript, tipsEl RUT (Chile) es el identificador único de todo ciudadano chileno, y su cálculo o verificación está más que difundido. Todo programador, por novato que sea, se ve enfrentado en algún momento a la verificación de este. El tema es cómo hacerlo de forma fácil. Una de las respuestas es el uso de mootools.
Para ello utilizaré una de las excelentes funciones de Manuel Ortega para la verificación de RUT. Esta entrega el dígito verificador dado un string de numeros. Por lo tanto, lo que se haga en mootools ha de separar el rut entregado y contrastarlo con el resultado de la función para ver si coinciden o no.
Sigue leyendo para ver cómo.
La Clase Elements
Elements es una de las clases nativas de mootools, y esta extiende/basa una ya implementada en Prototype. Con Elements se pueden efectuar algunas acciones interesantes:
- agregar una clase CSS a un elemento :
$('mielementohtml').addClass('miclasecss'); - modificar un atributo CSS a un elemento :
$('mielementohtml').setStyle('width', 300);
Entonces, todo se resume a crear una función extendiendo la clase Elements y que nos dé lo que deseamos con todo y la función del RUT. Para hacerlo basta con un Element.extend({ lafuncion: function(){ ...elcodigo...} }); (ver aquí para más información).
…y la función es…
-
-
Element.extend({
-
esRut:function(mensaje){
-
function dv(T){var M=0,S=1;for(;T;T=Math.floor(T/10))
-
S=(S+T%10*(9-M++%6))%11;return S?S-1:‘k’;}
-
-
mensaje = $pick(mensaje,false);
-
cadenas = this.getValue().split("-");
-
errMsg = ‘El RUT que ingreso no ha pasado la prueba del digito verificador’;
-
if (cadenas.length != 2){
-
if (mensaje) alert( errMsg );
-
return false;
-
}
-
var numeros = cadenas[0].replace(/\./g,""); //sacando cualquier "." que venga entre medio
-
if (cadenas[1].toLowerCase() != dv(numeros)){
-
if (mensaje) alert( errMsg );
-
return false;
-
}
-
return true;
-
}
-
});
-
Vamos por partes :
- la función del RUT, está incorporada dentro de la función de la extensión y se llama dv (dígito verificador).
- $pick es parte del core de mootools y sirve para darle un valor por defecto a una variable en caso de que esta no tenga ningún valor asignado. En este caso, si el paramentro mensaje no viene dado, entonces mensaje se “inicializa” en
false. getValue()también es una extensión de Elements y lo que hace es obtener el valor (.value) de cualquier elemento html (input, textarea, select). Por tanto, this.getValue().split(”-”) no es otra cosa más que dividir el string entregado en dos, a partir del guión, no importanto que tipo de objeto contiene el string.
El resto es deducible con un poco de lectura y conocimiento base. ¿Y cómo ocupamos esta extensión? es la mejor parte! suponiendo que el elemento html que contiene el RUT se denomina mirut, sólo bastará hacer lo siguiente:
$('mirut').esRut() -> validará el valor de mirut y entregará un true|false según sea el caso.
o bien :
$('mirut').esRut(true) -> validará el valor de mirut y entregará un true|false según sea el caso, y lanzará una alerta con un mensaje alusivo.
- Servicios:
- Comentarios RSS
- Menear!
- Del.icio.us

9/26/2007 at 7:31 pm
Excelente… pero… es RUN!, o no? De todas formas, se valida de la misma forma, es solo un error común semántico.
9/26/2007 at 7:32 pm
PD: Que bueno que se sume un autor más a EstadoBeta, como un fiel lector más; bienvenido!
10/5/2007 at 12:56 am
Siempre es bueno una alternativa mas, ya que es cosa de ver la cantidad de sitios chilenos que tienen una pésima validación del rut(si es que la tienen), aún cuando existen estos excelentes aportes que entregan personas como Vladimir, gracias.