Skip to content

Instantly share code, notes, and snippets.

@javiertapia
Created February 16, 2009 14:03
Show Gist options
  • Save javiertapia/65176 to your computer and use it in GitHub Desktop.
Save javiertapia/65176 to your computer and use it in GitHub Desktop.
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");
@rodridevops
Copy link

rodridevops 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
Copy link

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

@johuder33
Copy link

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
Copy link

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