Como todos já sabem está pra acontecer a mudança no meio do ano onde os números de telefone de São Paulo vão ganhar um digito a mais resumindo fu… nossos sites que possuem cadastro de telefone… brincadeira…
Então vamos lá eu atualmente utilizo o MaskedInput do JQuery e utilizo a seguinte máscara:
$("#telefone").mask("([telefone removido]");
Porém ele inclui a máscara MAS… se eu aumentar um digito nessa máscara ele considera todos obrigatórios e no meu formulário vai poder entrar tanto telefones de 8 digitos como telefone de 9 digitos eu gostaria q 1 UM digito apenas não fosse obrigatório.
E ai vcs já estão arrumando seus formulários já fizeram algo do tipo?
Eu também tive essa dúvida hoje, procurei a documentação e achei a resposta rapidamente
$("#telefone3").mask("([telefone removido]?9");
Tudo o que for postado depois do ? é opcional ao usuário!
Então fica bem fácil
Espero ter ajudado!
Abraços,
Junior
A
Anonymous
Vou testar isso na minha aplicação e posto aqui meu feedback!!!
Obrigado!
RiQuInHo_
Logo mais vai ser ‘10’ já é bom se preparar cedo rs
fabio.cbrandao
Ai galera meu formulário funcionou e está pronto pra receber o novo padrão de 9 digitos
kaisari
Estava procurando um local para discutir esse assunto, e parece que aqui é o ideal.
Tenho que fazer a correção para diversos sites que gerencio, e a solução apresentada também me veio a mente de imediato. O problema é que sou chato (hehehe) e ao pesquisar descobri que o padrão de formato adotado pela Anatel é (99) 99999-9999 e não ([telefone removido]9 (prefixo vai ficar com 5 dígitos). Parece bobeira mas… é para isso que usamos a máscara, para seguir o padrão pré-estabelecido.
Ainda não tenho a resposta, mas estou rascunhando… assim que tiver algo concreto posto aqui.
$("[alt=phone]").live('keypress', function (event) {
var target, phone, element;
target = (event.currentTarget) ? event.currentTarget : event.srcElement;
phone = target.value.replace(/\D/g, '');
element = $(target);
element.unsetMask();
if (phone.length > 5 && phone.substr(0,3) == "119") { //ele só vai colocar no formato de SP quando for ddd 11 e iniciar com 9.
element.setMask("([telefone removido]");
} else {
element.setMask("([telefone removido]");
}
})
;
anderson.silva
Pessoal,
Na empresa em que eu trabalho tivemos hoje esta solicitação, meio tarde por sinal. rss
Danilo, gostei da sua solução, mas como o prefixo dos celulares de S. Paulo vai de 6###.#### a 9###.####, e não apenas 9###.####, alterei um pouco o seu código para acomodar todos eles:
$("[alt=phone]").live('keypress',function(event){vartarget,phone,element;target=(event.currentTarget)?event.currentTarget:event.srcElement;phone=target.value.replace(/\D/g,'');element=$(target);element.unsetMask();if(phone.length>5&&phone.substr(0,3)>"115"&&phone.substr(0,3)<="119"){//ele só vai colocar no formato de SP quando for ddd 11 e iniciar entre 6 e 9.element.setMask("(99) 999-999-999");}else{element.setMask("([telefone removido]");}})
Foi uma mão na roda, obrigado.
Danilo MR:
Resolvi assim para o caso do jquery meio mask.
$("[alt=phone]").live('keypress', function (event) {
var target, phone, element;
target = (event.currentTarget) ? event.currentTarget : event.srcElement;
phone = target.value.replace(/\D/g, '');
element = $(target);
element.unsetMask();
if (phone.length > 5 && phone.substr(0,3) == "119") { //ele só vai colocar no formato de SP quando for ddd 11 e iniciar com 9.
element.setMask("([telefone removido]");
} else {
element.setMask("([telefone removido]");
}
})
;
ErickRAR
Altere de novo pois em breve será para o Brasil todo.
R
racporto
Pois é, Erick, mas é o tipo de alteração que, infelizmente, vamos ter que fazer on the fly, à medida em que a Anatel for determinando… :thumbdown:
P
pedroviscardi
/Função que padroniza telefone ([telefone removido] or ([telefone removido]/
function Telefone(v) {
O motivo do setTimeout é pq, do contrário, não temos acesso ao texto atualizado, somente o texto antigo (1 caractere a menos). O motivo do keydown em vez de keypress é pq keypress não pega backspace.
O único defeito que eu encontrei foi quando a pessoa está com 11 dígitos e apaga mais de um caractere de uma vez. Aí ele só vai atualizar a máscara quando chegar no décimo dígito.
Pessoal nao sei se vcs estao precisando ainda desta função porem precisei alterar um sistema que desenvolvo em ASP pois la tem um campo telefone de recados, logo ele pode ser tanto fixo como celular entao adaptei esta função para formatar de acordo com os numeros digitados.
Logo se encontrar na string o numero 9 logo apos o DDD significa que é um celular senão é um tel fixo.
Caso queiram permitir que se o primeiro numero digitado for 6-7-8 tambem formate com 5 caracteres o pre-fixo é só descomentar a linhas em Azul e comentar a linha em vermelho.
se precisarem esta ae para ajudar o pessoal grato.