Skip to content

Instantly share code, notes, and snippets.

@luizfelipeleite
Last active May 29, 2024 13:50
Show Gist options
  • Save luizfelipeleite/9301a10cc615d460ee05d4f8f7b915f9 to your computer and use it in GitHub Desktop.
Save luizfelipeleite/9301a10cc615d460ee05d4f8f7b915f9 to your computer and use it in GitHub Desktop.
Máscaras CPF, CNPJ, CEP e Telefone no Cleave
String.prototype.numbers = function () {
'use strict';
var result = '';
if (this.match(/(\d+)/g)) {
result = this.match(/(\d+)/g).join('');
}
return result;
};
( function( $ ) {
$(document).ready(function(){
new Cleave(
document.getElementById('cep'),
{
delimiters: ['.', '-'],
blocks: [2, 3, 3],
numericOnly: true,
delimiterLazyShow: true
}
);
new Cleave(
document.getElementById('cnpj'),
{
delimiters: ['.', '.', '/', '-'],
blocks: [2, 3, 3, 4, 2],
numericOnly: true,
delimiterLazyShow: true
}
);
new Cleave(
document.getElementById('cpf'),
{
delimiters: ['.', '.', '-'],
blocks: [3, 3, 3, 2],
numericOnly: true,
delimiterLazyShow: true
}
);
maskPhone(e) {
var element;
if (undefined === e) {
element = document.querySelector('[name=phone]');
element.addEventListener('keyup', e => this.maskPhone(e));
} else {
element = e.target;
}
if ( undefined !== element.cleave ) {
element.cleave.destroy();
}
if (9 !== parseInt(element.value.numbers().charAt(2))) {
element.cleave = new Cleave(
element,
{
delimiters: ['(', ') ', '-'],
blocks: [0, 2, 4, 4],
numericOnly: true,
delimiterLazyShow: true
}
);
} else {
element.cleave = new Cleave(
element,
{
delimiters: ['(', ') ', '-'],
blocks: [0, 2, 5, 4],
numericOnly: true,
delimiterLazyShow: true
}
);
}
}
maskPhone();
});
}( jQuery ) );
@gustavo-iha
Copy link

Awesome!! Thank so much :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment