Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde a todos, após uma longa pesquisa na internet, eu consegui as formatações para os campos de CPF, CNPJ, TELEFONE, DATA e CEP, com verificação de digitos (verifica se os valores digitados são números, se não for não aceita os valores...)...
Abaixo segue o código das funções:
<script>
//--->Função para a formatação dos campos...<---
function Mascara(tipo, campo, teclaPress) {
if (window.event)
{
var tecla = teclaPress.keyCode;
} else {
tecla = teclaPress.which;
}
var s = new String(campo.value);
// Remove todos os caracteres à seguir: ( ) / - . e espaço, para tratar a string denovo.
s = s.replace(/(\.|\(|\)|\/|\-| )+/g,'');
tam = s.length + 1;
if ( tecla != 9 && tecla != 8 ) {
switch (tipo)
{
case 'CPF' :
if (tam > 3 && tam < 7)
campo.value = s.substr(0,3) + '.' + s.substr(3, tam);
if (tam >= 7 && tam < 10)
campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,tam-6);
if (tam >= 10 && tam < 12)
campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,3) + '-' + s.substr(9,tam-9);
break;
case 'CNPJ' :
if (tam > 2 && tam < 6)
campo.value = s.substr(0,2) + '.' + s.substr(2, tam);
if (tam >= 6 && tam < 9)
campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,tam-5);
if (tam >= 9 && tam < 13)
campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,tam-8);
if (tam >= 13 && tam < 15)
campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,4)+ '-' + s.substr(12,tam-12);
break;
case 'TEL' :
if (tam > 2 && tam < 4)
campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,tam);
if (tam >= 7 && tam < 11)
campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,4) + '-' + s.substr(6,tam-6);
break;
case 'DATA' :
if (tam > 2 && tam < 4)
campo.value = s.substr(0,2) + '/' + s.substr(2, tam);
if (tam > 4 && tam < 11)
campo.value = s.substr(0,2) + '/' + s.substr(2,2) + '/' + s.substr(4,tam-4);
break;
case 'CEP' :
if (tam > 5 && tam < 7)
campo.value = s.substr(0,5) + '-' + s.substr(5, tam);
break;
}
}
}
//--->Função para verificar se o valor digitado é número...<---
function digitos(event){
if (window.event) {
// IE
key = event.keyCode;
} else if ( event.which ) {
// netscape
key = event.which;
}
if ( key != 8 || key != 13 || key < 48 || key > 57 )
return ( ( ( key > 47 ) && ( key < 58 ) ) || ( key == 8 ) || ( key == 13 ) );
return true;
}
</script>
Chame as funções no input que você precisar, obs:para os campos como CPF, CNPJ, TEL, etc... Use maxlength para determinar quantos caracteres você poderá digitar no campo...
Segue abaixo o exemplo utilizando as duas funções (formatar e verificar se é número):
<input name="cep" type="text" id="cep" maxlength="9" size="8" onKeyPress="return digitos(event, this);" onKeyUp="Mascara('CEP',this,event);">
Espero que eu tenha ajudado...
Boa tarde a todos e qualquer dúvida só postar...
Parabéns Adriano...
Funfa 100%...
Abraços..
Obrigado, muito útil.
Muito bom, suas mascaras.
Caso alguém precise da mascara de hora.
case 'HORA' :
if (tam > 2 && tam < 4)
campo.value = s.substr(0,2) + ':' + s.substr(2, tam);
if (tam > 4 && tam < 11)
campo.value = s.substr(0,2) + ':' + s.substr(2,2) + ':' + s.substr(4,tam-4);coloquei esses scripts num arquivo e nomeei-o de mascaras.js, porém não esta funcionando. inseri no início do arquivo php:
<script type="text/javascript" src="mascaras.js"></script> inseri: <script language="JavaScript" src="mascaras.js"></script> também não deu certo. o input estou usando o mesmo q ta aki no post ou seja: <input name="cep" type="text" id="cep" maxlength="9" size="8" onKeyPress="return digitos(event, this);" onKeyUp="Mascara('CEP',this,event);"> Agora, se eu colocar o código dentro do arquivo php da certo, porém, gostaria de usá-lo fora em um arquivo js.
Adriano,
Mais um código que vai para o meu Hall da Fama de códigos úteis rss e esse vai com título de "muitíssimo útil" rsssss
Eu fiz uma pequena alteração nele, caso alguém se interesse, eu alterei para que o usuário não consiga digitar mais que a quantidade de caracteres que tem o campo. por exemplo, o cep saum 5 numeros e um traço portanto ele não consegue digitar mais q 6 caracteres e assim sucessivamente, caso não queiram limitar o tamanho do input do HTML por motivos de estética ou esquecimento mesmo.
É apenas um plus.
Absss
function Mascara(tipo, campo, teclaPress) {
if (window.event)
{
var tecla = teclaPress.keyCode;
} else {
tecla = teclaPress.which;
}
var s = new String(campo.value);
// Remove todos os caracteres à seguir: ( ) / - . e espaço, para tratar a string denovo.
s = s.replace(/(\.|\(|\)|\/|\-| )+/g,'');
tam = s.length + 1;
if ( tecla != 9 && tecla != 8 ) {
switch (tipo)
{
case 'CPF' :
if (tam > 3 && tam < 7)
campo.value = s.substr(0,3) + '.' + s.substr(3, tam);
if (tam >= 7 && tam < 10)
campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,tam-6);
if (tam >= 10 && tam < 12)
campo.value = s.substr(0,3) + '.' + s.substr(3,3) + '.' + s.substr(6,3) + '-' + s.substr(9,tam-9);
if (tam > 12)
campo.value = campo.value.substr(0,campo.value.length-1);
break;
case 'CNPJ' :
if (tam > 2 && tam < 6)
campo.value = s.substr(0,2) + '.' + s.substr(2, tam);
if (tam >= 6 && tam < 9)
campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,tam-5);
if (tam >= 9 && tam < 13)
campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,tam-8);
if (tam >= 13 && tam < 15)
campo.value = s.substr(0,2) + '.' + s.substr(2,3) + '.' + s.substr(5,3) + '/' + s.substr(8,4)+ '-' + s.substr(12,tam-12);
if (tam > 15)
campo.value = campo.value.substr(0,campo.value.length-1);
break;
case 'TEL' :
if (tam > 2 && tam < 4)
campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,tam);
if (tam >= 7 && tam < 11)
campo.value = '(' + s.substr(0,2) + ') ' + s.substr(2,4) + '-' + s.substr(6,tam-6);
if (tam > 11)
campo.value = campo.value.substr(0,campo.value.length-1);
break;
case 'DATA' :
if (tam > 2 && tam < 4)
campo.value = s.substr(0,2) + '/' + s.substr(2, tam);
if (tam > 4 && tam < 11)
campo.value = s.substr(0,2) + '/' + s.substr(2,2) + '/' + s.substr(4,tam-4);
if (tam > 9)
campo.value = campo.value.substr(0,campo.value.length-1);
break;
case 'CEP' :
if (tam > 5 && tam < 7)
campo.value = s.substr(0,5) + '-' + s.substr(5, tam);
if (tam > 9)
campo.value = campo.value.substr(0,campo.value.length-1);
break;
}
}
}Putz estava precisando desse codigo..
Eu estava usando varios scripts diferentes para telefone, cnpj, cep.
Esse serve para todos.
PERFEITOOO, TESTADO E APROVADO
Post de 2008 kkkkkkkkkkk
bala parabéns, testarei logo, eu tenho uma em JQuery que tbm é muito bom, brevimente ire compartilhar....