badah
9/12/2015 - 5:23 PM

Demo de máscara com expressão regular de telefone brasileiro que aceita número de 8 e 9 dígitos com DDD nos formatos (11) 2222-3333 e (11) 9

Demo de máscara com expressão regular de telefone brasileiro que aceita número de 8 e 9 dígitos com DDD nos formatos (11) 2222-3333 e (11) 92222-3333. Fonte: http://elcio.com.br/ajax/mascara/

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
		<title>Demo Máscara Telefone</title>
	</head>
	<body>
		Telefone: <input onkeypress="mascaraTelefone(this)"/><br />
		<script>
			/*
				Modelo de chamada: <input onkeypress="mascaraTelefone(this) /> this = objeto DOM do input
				Adição de função de leitura do campo, em outra linha de execução - setTimerout()
				Parâmetro:	input - objeto do DOM. Alternativa: object.getElementById("id")
			*/
			function mascaraTelefone(input){
				input.maxLength = 15;//propriedade maxlength adicionada ao campo por javascript
				setTimeout(//set timeout usado para atualização mais precisa
					function(){
						input.value = formataTelefone(input.value);//atualização do campo com seu valor formatado em formataTelefone()
					}
					,1//atualização do campo a cada milisegundo
				);
			}

			/*
				Tratamento da string por expressão regular.
				Parâmetro: 	value - string a ser tratada
				Retorno: 	value - string tratada no formato da máscara
			*/
			function formataTelefone(value){
				value = value.replace(/\D/g,"");//Remove tudo o que não é dígito
				
				value = value.replace(/^(\d\d)(\d)/g,"($1) $2");//Coloca parênteses em volta dos dois primeiros dígitos
				
				if(value.length < 14) value = value.replace(/(\d{4})(\d)/,"$1-$2");//Número com 8 dígitos. Formato: (99) 9999-9999
				else value = value.replace(/(\d{5})(\d)/,"$1-$2");//Número com 9 dígitos. Formato: (99) 99999-9999
				
				return value;
			}
			//Fonte: http://elcio.com.br/ajax/mascara/
		</script>
	</body>
</html>