-
-
Save robertoandres24/e49fbabd67952b1b11c23d3af043fafb to your computer and use it in GitHub Desktop.
Para el uso de la mascara se asume la existencia de Jquery
This file contains hidden or 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
maskRut(elementId) { | |
; (function (a) { | |
a.fn.validCampoFranz = function (b) { | |
a(this).on({ | |
keypress: function (a) { | |
var c = a.which, | |
d = a.keyCode, | |
e = String.fromCharCode(c).toLowerCase(), | |
f = b | |
; ((-1 != f.indexOf(e) || | |
9 == d || | |
(37 != c && 37 == d) || | |
(39 == d && 39 != c) || | |
8 == d || | |
(46 == d && 46 != c)) && | |
161 != c) || | |
a.preventDefault() | |
} | |
}) | |
} | |
})($) | |
$(elementId).validCampoFranz('1234567890-kK') | |
$(elementId).focusout(function () { | |
var rut = $(this).val() | |
rut = rut.replace(/-/g, '') | |
var sRut1 = rut | |
var nPos = 0 | |
var sInvertido = '' | |
var sRut = '' | |
for (var i = sRut1.length - 1; i >= 0; i--) { | |
sInvertido += sRut1.charAt(i) | |
if (i == sRut1.length - 1) sInvertido += '-' | |
else if (nPos == 3) { | |
sInvertido += '' | |
nPos = 0 | |
} | |
nPos++ | |
} | |
for (var j = sInvertido.length - 1; j >= 0; j--) { | |
if (sInvertido.charAt(sInvertido.length - 1) != '.') | |
sRut += sInvertido.charAt(j) | |
else if (j != sInvertido.length - 1) sRut += sInvertido.charAt(j) | |
} | |
$(this).val(sRut.toUpperCase()) | |
}) | |
} |
This file contains hidden or 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
validateRut(rut) { | |
// Despejar Puntos | |
let valor = rut.replace(/\./g, ''); | |
// Despejar Guión | |
valor = valor.replace('-', ''); | |
// Aislar Cuerpo y Dígito Verificador | |
let cuerpo = valor.slice(0, -1); | |
let dv = valor.slice(-1).toUpperCase(); | |
// Formatear RUN | |
rut = cuerpo + '-' + dv | |
// Si no cumple con el mínimo ej. (n.nnn.nnn) | |
if (cuerpo.length < 7) { return false; } | |
// Calcular Dígito Verificador | |
let suma = 0; | |
let multiplo = 2; | |
// Para cada dígito del Cuerpo | |
for (let i = 1; i <= cuerpo.length; i++) { | |
// Obtener su Producto con el Múltiplo Correspondiente | |
let index = multiplo * valor.charAt(cuerpo.length - i); | |
// Sumar al Contador General | |
suma = suma + index; | |
// Consolidar Múltiplo dentro del rango [2,7] | |
if (multiplo < 7) { multiplo = multiplo + 1; } else { multiplo = 2; } | |
} | |
// Calcular Dígito Verificador en base al Módulo 11 | |
let dvEsperado = 11 - (suma % 11); | |
// Casos Especiales (0 y K) | |
dv = (dv == 'K') ? 10 : dv; | |
dv = (dv == 0) ? 11 : dv; | |
// Validar que el Cuerpo coincide con su Dígito Verificador | |
if (dvEsperado != dv) { return false; } | |
// Si todo sale bien, eliminar errores (decretar que es válido) | |
return true | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment