Validar NIT
Script de ejemplo de cómo validar el Número de Identificación Tributaria (NIT) utilizado en Guatemala.
HTML
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<div class="container">
<h1>Validación de NIT <small>utilizado en Guatemala</small></h1>
<p>El <strong>Número de Identificación Tributaria</strong> (NIT) es el número con el que se identifican los contribuyentes en Guatemala para el pago de impuestos.</p>
<blockquote><p class="small">El presente formulario permite <em>verificar si el NIT escrito es válido</em>, sin embargo la validez del número no implica que exista un contribuyente que se identifique con dicho número.</p></blockquote>
<div class="row">
<div class="col-md-12">
<form role="form">
<div class="form-group has-feedback">
<label for="nit" class="control-label">Nit:</label>
<input type="text" class="form-control" id="nit" placeholder="Ingrese Nit" />
<span class="glyphicon form-control-feedback"></span>
</div>
</form>
</div>
</div>
</div>
JavaScript
function nitIsValid(nit) {
if (!nit) {
return true;
}
var nitRegExp = new RegExp('[0-3]');
if (!nitRegExp.test(nit)) {
return false;
}
nit = nit.replace(/-/, '');
var lastChar = nit.length - 1;
var number = nit.substring(0, lastChar);
var expectedCheker = nit.substring(lastChar, lastChar + 1).toLowerCase();
var factor = number.length + 1;
var total = 0;
for (var i = 0; i < number.length; i++) {
var character = number.substring(i, i + 1);
var digit = parseInt(character, 10);
total += (digit * factor);
factor = factor - 1;
}
var modulus = (11 - (total % 11)) % 11;
var computedChecker = (modulus == 10 ? "k" : modulus.toString());
return expectedCheker === computedChecker;
}
$('#nit').bind('change paste keyup', function (e) {
var $this = $(this);
var $parent = $this.parent();
var $next = $this.next();
var nit = $this.val();
if (nit && nitIsValid(nit)) {
$parent.addClass('has-success');
$next.addClass('glyphicon-ok');
$parent.removeClass('has-error');
$next.removeClass('glyphicon-remove');
} else if (nit) {
$parent.addClass('has-error');
$next.addClass('glyphicon-remove');
$parent.removeClass('has-success');
$next.removeClass('glyphicon-ok');
} else {
$parent.removeClass('has-error');
$next.removeClass('glyphicon-remove');
$parent.removeClass('has-success');
$next.removeClass('glyphicon-ok');
}
});