Skip to content

Instantly share code, notes, and snippets.

@TiagoFuelber
Last active November 9, 2017 13:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TiagoFuelber/3ef388d4c184ebea1a21f60ae8afcc80 to your computer and use it in GitHub Desktop.
Save TiagoFuelber/3ef388d4c184ebea1a21f60ae8afcc80 to your computer and use it in GitHub Desktop.
Máscara para CNPJ e CPF no mesmo input
var input = document.querySelector('#inputCpfCnpj');
input.addEventListener('input', function(){
mascaraMutuario(this, cpfCnpj);
});
input.addEventListener('blur', function(){
clearTimeout();
});
function mascaraMutuario(o,f){
v_obj=o
v_fun=f
setTimeout(function(){
v_obj.value=v_fun(v_obj.value)
},1)
}
function cpfCnpj(v){
//Remove tudo o que não é dígito
v=v.replace(/\D/g,"")
if (v.length <= 11) { //CPF
//Coloca um ponto entre o terceiro e o quarto dígitos
v=v.replace(/(\d{3})(\d)/,"$1.$2")
//Coloca um ponto entre o terceiro e o quarto dígitos
//de novo (para o segundo bloco de números)
v=v.replace(/(\d{3})(\d)/,"$1.$2")
//Coloca um hífen entre o terceiro e o quarto dígitos
v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2")
} else { //CNPJ
//Coloca ponto entre o segundo e o terceiro dígitos
v=v.replace(/^(\d{2})(\d)/,"$1.$2")
//Coloca ponto entre o quinto e o sexto dígitos
v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3")
//Coloca uma barra entre o oitavo e o nono dígitos
v=v.replace(/\.(\d{3})(\d)/,".$1/$2")
//Coloca um hífen depois do bloco de quatro dígitos
v=v.replace(/(\d{4})(\d)/,"$1-$2")
}
return v
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment