Máscara de telefone

PHOTO EMBED

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);
content_copyCOPY