Created
February 16, 2009 14:03
-
-
Save javiertapia/65176 to your computer and use it in GitHub Desktop.
Validar rut mediante jQuery.Validate
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"); |
how to add rut format ?
example: 16.921.509-k ??
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);
}
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
Deberías validar también el largo del campo, hay algunos falsos positivos.
Así te asguras que el campo existe y el largo es el correcto.