Last active
June 15, 2023 15:12
-
-
Save gaulatti/69a24cc199a4253d058c to your computer and use it in GitHub Desktop.
HTML5 Chilean RUT Validator
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
<!doctype html> | |
<html lang="es"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Validador de RUT HTML5</title> | |
</head> | |
<body> | |
<form> | |
<input type="text" id="rut" name="rut" required oninput="checkRut(this)" placeholder="Ingrese RUT"> | |
<button type="submit">Validar RUT y Enviar Form</button> | |
<script src="validarRUT.js"></script> | |
</form> | |
</body> | |
</html> |
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
function checkRut(rut) { | |
// Despejar Puntos | |
var valor = rut.value.replace('.',''); | |
// Despejar Guión | |
valor = valor.replace('-',''); | |
// Aislar Cuerpo y Dígito Verificador | |
cuerpo = valor.slice(0,-1); | |
dv = valor.slice(-1).toUpperCase(); | |
// Formatear RUN | |
rut.value = cuerpo + '-'+ dv | |
// Si no cumple con el mínimo ej. (n.nnn.nnn) | |
if(cuerpo.length < 7) { rut.setCustomValidity("RUT Incompleto"); return false;} | |
// Calcular Dígito Verificador | |
suma = 0; | |
multiplo = 2; | |
// Para cada dígito del Cuerpo | |
for(i=1;i<=cuerpo.length;i++) { | |
// Obtener su Producto con el Múltiplo Correspondiente | |
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 | |
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) { rut.setCustomValidity("RUT Inválido"); return false; } | |
// Si todo sale bien, eliminar errores (decretar que es válido) | |
rut.setCustomValidity(''); | |
} |
puedes poner una lista desplegable condicionante que formatee entre
extranjero y nacional
si no se selecciona nada en la lista desplegable que no avance a poner
ningún rut
El vie, 19 may 2023 a las 14:56, Enzo Aravena ***@***.***>)
escribió:
… ***@***.**** commented on this gist.
------------------------------
como lo harían si les piden validar también los rut provisorios de
extranjeros, los cuales comienzan de los 100 millones, no he podido
encontrar la respuesta
—
Reply to this email directly, view it on GitHub
<https://gist.github.com/gaulatti/69a24cc199a4253d058c#gistcomment-4573682>
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AKY5XLJD34M3INAIN7KLPUDXG666TBFKMF2HI4TJMJ2XIZLTSKBKK5TBNR2WLJDHNFZXJJDOMFWWLK3UNBZGKYLEL52HS4DFQKSXMYLMOVS2I5DSOVS2I3TBNVS3W5DIOJSWCZC7OBQXE5DJMNUXAYLOORPWCY3UNF3GS5DZVRZXKYTKMVRXIX3UPFYGLK2HNFZXIQ3PNVWWK3TUUZ2G64DJMNZZDAVEOR4XAZNEM5UXG5FFOZQWY5LFVAYTCOBWGM3DGMNHORZGSZ3HMVZKMY3SMVQXIZI>
.
You are receiving this email because you are subscribed to this thread.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>
.
--
*Saluda **Atte.*
*Edgard Henriquez Arancibia*
*+569 92267689*
*Ing. en Informatica*
*Para colaborar con el ahorro energético y medio ambiente, imprime sólo si
es estrictamente necesario.*
Esta semana voy a refactorizar esto (lo hice hace milenios), qué ha cambiado desde ese entonces en la forma de validarlo aparte del módulo 11?
He visto bastantes módulos sobre todo de WooCommerce que tienen módulos validadores, no sé si son APIs o corren scripots
Segun esta guia, el calculo es bastante simple y aplica para numeros de rut "infinitamente" largos...
https://validarutchile.cl/calcular-digito-verificador.php
la de jumpseller lleva un ejemplo muy compacto (dificil de leer) en javascript
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
como lo harían si les piden validar también los rut provisorios de extranjeros, los cuales comienzan de los 100 millones, no he podido encontrar la respuesta