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