Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Validar rut mediante jQuery.Validate
function validaRut(campo){
if ( campo.length == 0 ){ return false; }
if ( campo.length < 8 ){ return false; }
campo = campo.replace('-','')
campo = campo.replace(/\./g,'')
var suma = 0;
var caracteres = "1234567890kK";
var contador = 0;
for (var i=0; i < campo.length; i++){
u = campo.substring(i, i + 1);
if (caracteres.indexOf(u) != -1)
contador ++;
}
if ( contador==0 ) { return false }
var rut = campo.substring(0,campo.length-1)
var drut = campo.substring( campo.length-1 )
var dvr = '0';
var 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 != drut.toLowerCase() ) { return false; }
else { return true; }
}
/* La siguiente instrucción extiende las capacidades de jquery.validate() para que
admita el método RUT, por ejemplo:
$('form').validate({
rules : { rut : { required:true, rut:true} } ,
messages : { rut : { required:'Escriba el rut', rut:'Revise que esté bien escrito'} }
})
// Nota: el meesage:rut sobrescribe la definición del mensaje de más abajo
*/
// comentar si jquery.Validate no se está usando
$.validator.addMethod("rut", function(value, element) {
return this.optional(element) || validaRut(value);
}, "Revise el RUT");
@rcordoval

This comment has been minimized.

Copy link

@rcordoval rcordoval commented Oct 24, 2016

Deberías validar también el largo del campo, hay algunos falsos positivos.

if ( campo.length == 0 ){ return false; }
if ( campo.length < 8 ){ return false; }

    campo = campo.replace('-','')
    campo = campo.replace(/\./g,'')

if ( campo.length > 9 ){ return false; }

Así te asguras que el campo existe y el largo es el correcto.

@marcelomunozr

This comment has been minimized.

Copy link

@marcelomunozr marcelomunozr commented Aug 30, 2017

how to add rut format ?
example: 16.921.509-k ??

@johuder33

This comment has been minimized.

Copy link

@johuder33 johuder33 commented Dec 14, 2017

Gracias por tu aporte, sin embargo existe una forma mucho mas corta de validar un rut, con expresiones regulares, este puede ayudar

function isValidRUT(rut) {
  if (!rut | typeof rut !== 'string') return false;

  var regexp = /^\d{7,8}-[k|K|\d]{1}$/;
  return regexp.test(rut);
}
@Pablo-Araya

This comment has been minimized.

Copy link

@Pablo-Araya Pablo-Araya commented Apr 8, 2018

johuder33

Si, pero ojo.
Con esa expresión regular solo validas la estructura numérica, sin embargo no puedes saber si han ingresado un rut falso (con otro dígito verificador)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment