Mascara campo de telefone em javascript com regex – Adiciona o nove para telefones de são paulo

Esse código abaixo, possui uma função que no evento onblur do campo, adiciona o dígito nove para telefones com ddd 11, caso o usuário tenha informado um telefone de dígito 11 e não tenha informado o nove.

Completo do post Mascara campo de telefone em javascript com regex – Nono dígito – Telefones São Paulo

<html>
<head>
    <title>Mascara Telefone</title>
<script type="text/javascript">
/* Máscaras ER */
function mascara(o, f) {
    v_obj = o;
    v_fun = f;
    setTimeout(execmascara, 1);
}
function execmascara() {
    v_obj.value = v_fun(v_obj.value)
}
function mtel(v) {
    v=v.replace(/\D/g,"");
    v=v.replace(/^(\d{2})(\d)/g,"($1) $2");
    v=v.replace(/(\d)(\d{4})$/,"$1-$2");
    return v;
}
function id(el) {
	return document.getElementById(el);
}
window.onload = function() {
	var $telefone = id('telefone');
	$telefone.onkeyup = function() {
		mascara( this, mtel );
	}
	$telefone.onblur = function() {
		var v = this.value;
		if( v.indexOf('(11)') !== -1 && v.length === 14) {
			this.value = v.replace(/\((\d{2})\) (\d{4})-(\d{4})/g,'($1) 9$2-$3');
		}
	}
}
</script>

</head>
<body>

    <input type="text" name="telefone" id="telefone" maxlength="15" />

</body>
</html>

21 Comments

  1. Não ta funcionando no chrome..

    Esse script só vai funcionar se eu digitar o ddd 11?

    Teria como remover isso, e incluir o digito 9 só quando o usuário digitar um digito a mais? Por que essa regra vai ser adpatada para outras regiões em breve..

    Exemplo, (DD) 9 0000-0000 ou caso não digite um caractere a mais, fiquei assim: (DD) 0000-0000.

    • Oi Bruno, sim esse script só adiciona o nove caso seja DDD 11.
      Não entendi o comportamento que vc está buscando. Se a pessoa digitar nove dígitos, não faz sentido incluir mais nada, pois ela mesma já digitou tudo o que precisava.

  2. E como fica para aqueles telefone de SP que não possuem o digito 9?

  3. Sim, mas e os telefones fixos? Eles não possuem o nono dígito.

    • ai vc tem 2 opções: ou não usa a parte do evento onblur, ou vc fica com 2 campos: um para fixo e outro para celular.

  4. gostei do script parabéns!

    Será que você poderia disponibilizar em seu blog um script para validação de CPF/CNPJ junto a receita federal que retorna o nome da pessoa em outro campo?

    Isso seria muito interessante, e tenho certeza que ajudaria muitos que procuram uma solução deste tipo, incluindo eu rsrs.

    att,
    César

    • Eu tenho um script deste tipo que uso meu sistema de cadastro, e pode ter certeza não é nada fácil quebrar o captcha da receita federal. Consegui depois de muito tempo tentando.

  5. Só uma dica para vocês, o site (http://www.bindideias.com.br/2011/12/02/consultando-um-cpf-na-receita-federal-utilizando-o-php/) conseguiu fazer, mas precisa resolver o captcha. Porém devido a atualização da receita, o script parou de funcionar.

  6. Rosilvaldo Junior

    maio 16, 2013 at 23:08

    tem que perguntar para o desenvolvedor se isso é possível né pessoal.. e então desenvolvedor, é possível criar um script assim? seria muito interessante mesmo, nao existe nenhum parecido na internet hehe!!!

    • Caras, o problema desse tipo de script é quebrar o captcha lá da receita, e se temos que fazer isso com backend, então já que não há uma API liberada, podemos concluir que é algo “ilegal”.

  7. não vejo isso como ilegal, é um script muito interessante realmente…

    entrei também em contato com o site bindideias, para ver se eles podem desenvolver.

  8. gostaria muito de um script de validação de cpf junto a receita seria muito util.. sera que teria como alguem desenvolver algo do tipo? Os disponiveis na internet não funcionam mais…

  9. Essa versão do script ficou pior, porque sou cego, e com ela não consigo navegar com as setas no campo, tal qual podia fazer na versão anterior.

    Obrigado.

  10. Aonde eu posso achar o script para validação de cpf pela receita? eu testei alguns disponiveis na internet mas nao funciona mais.. alguem sabe onde eu posso conseguir?

  11. Dioni almeida

    maio 27, 2013 at 01:31

    William, você vai dar inicio ao desenvolvimento do projeto relatado pelos usuários acima, do sistema para validação de cpf?

    Trabalho numa terceirizada da Google, eu posso te ajudar a conseguir clientes, anuncio seus trabalhos no blog na empresa.

    • Outro problema tambem que ocorre é que a mascara e inserida incorretamente se eu segurar um número no campo..

      Por exemplo, faça um teste ai, no campo do telefone fique segurando algum número até ele exceder o número de caracteres permitido, quando vc soltar do número, a mascara fica errada..

  12. guilherme nascimento (Silverfox)

    julho 24, 2013 at 12:12

    ótima maneira de fazer mascaras, bem mais limpa, parabéns.

  13. Olá gostei muito do seu tutorial, só que fiquei na dúvida de como eu faria para fazer o mesmo com os demais campos, aqui tenho um formulário que tenho que fazer isso com o campo data, telefone, cep e cpf, como ficaria teria que repetir todos esses passos para cada campo??

  14. Valeu… show de bola 😉

Deixe uma resposta

Your email address will not be published.

*