En un post anterior publiqué un validador de RUT hecho con PHP y ahora es el turno de Javascript.
Es similar al anterior con PHP:
Es similar al anterior con PHP:
function validaRut(rut){ var rexp = new RegExp(/^([0-9])+\-([kK0-9])+$/); if(rut.match(rexp)){ var RUT = rut.split("-"); var elRut = RUT[0].toArray(); var factor = 2; var suma = 0; var dv; for(i=(elRut.length-1); i>=0; i--){ factor = factor > 7 ? 2 : factor; suma += parseInt(elRut[i])*parseInt(factor++); } dv = 11 -(suma % 11); if(dv == 11){ dv = 0; }else if (dv == 10){ dv = "k"; } if(dv == RUT[1].toLowerCase()){ alert("El rut es válido!!"); return true; }else{ alert("El rut es incorrecto"); return false; } }else{ alert("Formato incorrecto"); return false; } }
Pueden ver un demo aquí
Para más información sobre el RUT y el algoritmo de creación y validación pueden consultar la wikipedia: http://es.wikipedia.org/wiki/RUT.
Para más información sobre el RUT y el algoritmo de creación y validación pueden consultar la wikipedia: http://es.wikipedia.org/wiki/RUT.
y como puedo llamarlo?
ResponderBorrary hacerlo en 2 campos de texto uno para el rut
ResponderBorrary el otro para el dv .....
sin mas se dsespide nelson
=========================================
programador_junior@hotmail.com
genial men te pasaste!!
ResponderBorrarSé que esta es una conversación antigua, pero en caso que a alguien le sirva aquí hay una versión optimizada de la misma función... es más difícil de leer para un humano pero la gracia que tiene es que se ejecuta más rápido y ocupa muchos menos bytes:
Borrarfunction validaRut(b){if(b.match(/^([0-9])+\-([kK0-9])+$/)){b=b.split("-");var a=b[0].split(""),c=2,d=0;for(i=a.length-1;0<=i;i--)c=7<c?2:c,d+=parseInt(a[i])*parseInt(c++);a=11-d%11;return(11==a?0:10==a?"k":a)==b[1].toLowerCase()}return!1};
Ah, y no genera los alerts sino que sólo retorna true o false dependiendo de si el parámetro era un RUT válido o no
En la línea:
ResponderBorrarvar elRut = RUT[0].toArray();
Produce un error.
Es una función del prototype.js
BorrarReemplazá la línea por:
var elRut = RUT[0].split('');
y listo. ;)
Efectivamente, el método toArray() es propio de prototype. Mi grave error es no haber indicado la dependencia. Sin embargo el último anónimo indicó una limpia solución.
ResponderBorrary como hacerlo con un campo de texto dentro de un formulario?
ResponderBorrarDebes asociar la función mediante un evento (blur por ejemplo) gatillado desde el campo de texto.
ResponderBorrarLa otra opción es desde el evento submit del formulario que contiene al input.
Muchísimas gracias eres todo un maestro y sobretodo también agradezco al señor anónimo que dio una respuesta con el vector :D
ResponderBorrarBuen aporte lo voy a probar... saludos
ResponderBorrarEstimado, por qué cuando se llena con 0 éste marca el rut como válido?..
ResponderBorrarexiste el rut 00.000.000-0???
Realiza el cálculo ;).
BorrarEl validador trabaja en base al algoritmo definido para ello el cual es, en último término, un validador cuantitativo.
El que el rut exista o no, no es parte de su propósito, para ello habría que consultar al Registro Civil y ahí nos metemos en otro nivel de validación, es decir, la cualitativa.
sube el frame del html po viejo
ResponderBorrarno me funka
ResponderBorrarprofe es usted?? si es asi me salvo la existencia
ResponderBorrar