Máscara de telefone
Sat Jul 05 2025 17:11:07 GMT+0000 (Coordinated Universal Time)
Saved by @nielsonsantana #php
add_action('wp_footer', function() {
?>
<!-- Inclui os arquivos da biblioteca intl-tel-input -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/css/intlTelInput.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/intlTelInput.min.js"></script>
<script type="text/javascript">
// Função para inicializar o campo de telefone
function inicializarTelefoneComBandeira() {
const telefoneInput = document.querySelector('input[type="tel"], input[name*="telefone"]');
console.log("Campo telefone detectado:", telefoneInput); // Debug
if (telefoneInput && !telefoneInput.classList.contains('telefone-inicializado')) {
telefoneInput.classList.add('telefone-inicializado'); // Evita múltiplas inicializações
// Inicializa o intl-tel-input
const iti = window.intlTelInput(telefoneInput, {
initialCountry: "br", // Define o Brasil como padrão
separateDialCode: true, // Mostra o código do país separado
preferredCountries: ["br"], // Prioriza o Brasil no dropdown
});
// Função para aplicar a máscara com base no país
function aplicarMascara() {
let value = telefoneInput.value.replace(/\D/g, ''); // Remove tudo que não é número
const countryCode = iti.getSelectedCountryData().iso2;
let formattedValue = '';
if (value.length === 0) {
telefoneInput.value = '';
return;
}
switch (countryCode) {
case "br":
if (value.length > 11) value = value.slice(0, 11);
if (value.length <= 2) {
formattedValue = '(' + value;
} else if (value.length <= 7) {
formattedValue = '(' + value.substring(0, 2) + ') ' + value.substring(2);
} else {
formattedValue = '(' + value.substring(0, 2) + ') ' + value.substring(2, 7) + '-' + value.substring(7);
}
break;
case "us":
case "ca":
if (value.length > 10) value = value.slice(0, 10);
if (value.length <= 3) {
formattedValue = '(' + value;
} else if (value.length <= 6) {
formattedValue = '(' + value.substring(0, 3) + ') ' + value.substring(3);
} else {
formattedValue = '(' + value.substring(0, 3) + ') ' + value.substring(3, 6) + '-' + value.substring(6);
}
break;
case "gb":
if (value.length > 11) value = value.slice(0, 11);
if (value.length <= 5) {
formattedValue = value;
} else {
formattedValue = value.substring(0, 5) + ' ' + value.substring(5);
}
break;
case "de":
if (value.length > 11) value = value.slice(0, 11);
if (value.length <= 4) {
formattedValue = value;
} else {
formattedValue = value.substring(0, 4) + ' ' + value.substring(4);
}
break;
case "ar":
if (value.length > 11) value = value.slice(0, 11);
if (value.length <= 1) {
formattedValue = value;
} else if (value.length <= 3) {
formattedValue = value.substring(0, 1) + ' ' + value.substring(1);
} else if (value.length <= 7) {
formattedValue = value.substring(0, 1) + ' ' + value.substring(1, 3) + ' ' + value.substring(3);
} else {
formattedValue = value.substring(0, 1) + ' ' + value.substring(1, 3) + ' ' + value.substring(3, 7) + '-' + value.substring(7);
}
break;
default:
if (value.length > 12) value = value.slice(0, 12);
if (value.length <= 4) {
formattedValue = value;
} else if (value.length <= 8) {
formattedValue = value.substring(0, 4) + ' ' + value.substring(4);
} else {
formattedValue = value.substring(0, 4) + ' ' + value.substring(4, 8) + ' ' + value.substring(8);
}
break;
}
telefoneInput.value = formattedValue;
}
telefoneInput.addEventListener('input', aplicarMascara);
telefoneInput.addEventListener('countrychange', function() {
telefoneInput.value = '';
aplicarMascara();
});
}
}
// Tenta inicializar várias vezes (para formulários dinâmicos)
document.addEventListener('DOMContentLoaded', () => {
for (let i = 1; i <= 5; i++) {
setTimeout(inicializarTelefoneComBandeira, i * 1000);
}
});
</script>
<?php
}, 100);



Comments