Home / Admin / Máscara CPF
Duplicate Snippet

Embed Snippet on Your Site

Máscara CPF

Code Preview
js
// Carrega a biblioteca Inputmask
var script = document.createElement('script');
script.src = "https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.8/jquery.inputmask.min.js";
script.onload = function () {
  aplicarMascaraCPF();
};
document.head.appendChild(script);
// Função que aplica a máscara e a validação no campo CPF
function aplicarMascaraCPF() {
  if (typeof jQuery === 'undefined' || typeof Inputmask === 'undefined') {
    setTimeout(aplicarMascaraCPF, 500);
    return;
  }
  var $ = jQuery;
  function aplicar() {
    var campo = $('.cpf-campo');
    if (campo.length > 0) {
      campo.inputmask('999.999.999-99');
      console.log('✅ Máscara aplicada no CPF');
      // Remove validações anteriores
      campo.off('input.validacaoCPF');
      // Valida quando o campo mudar
      campo.on('input.validacaoCPF', function () {
        var cpf = $(this).val().replace(/[^\d]+/g, '');
        if (cpf.length === 11 && !validarCPF(cpf)) {
          $(this).css('border-color', 'red');
        } else {
          $(this).css('border-color', '');
        }
      });
      // Impede envio se CPF for inválido
      campo.closest('form').on('submit.validacaoCPF', function (e) {
        var cpf = campo.val().replace(/[^\d]+/g, '');
        if (!validarCPF(cpf)) {
          e.preventDefault();
          alert('❌ CPF inválido. Verifique e tente novamente.');
          campo.focus();
        }
      });
    } else {
      setTimeout(aplicar, 500);
    }
  }
  aplicar();
}
// Validador real de CPF
function validarCPF(cpf) {
  if (cpf.length !== 11 || /^(\d)\1{10}$/.test(cpf)) return false;
  var soma = 0;
  for (var i = 0; i < 9; i++) {
    soma += parseInt(cpf.charAt(i)) * (10 - i);
  }
  var resto = 11 - (soma % 11);
  if (resto >= 10) resto = 0;
  if (resto !== parseInt(cpf.charAt(9))) return false;
  soma = 0;
  for (var i = 0; i < 10; i++) {
    soma += parseInt(cpf.charAt(i)) * (11 - i);
  }
  resto = 11 - (soma % 11);
  if (resto >= 10) resto = 0;
  return resto === parseInt(cpf.charAt(10));
}

Comments

Add a Comment