Untitled
unknown
plain_text
3 months ago
4.1 kB
3
Indexable
<script> (function() { // Função para coletar os dados do formulário do Wix function getFormData() { var formData = {}; var formRoot = document.querySelector('[data-hook="form-root"]'); if (!formRoot) return formData; // Coleta todos os inputs, exceto os de tipo "file" var inputs = formRoot.querySelectorAll('input:not([type="file"])'); for (var i = 0; i < inputs.length; i++) { var input = inputs[i]; var type = input.getAttribute('type'); // Usa o atributo aria-label como chave; se não houver, usa o id ou um fallback var key = input.getAttribute('aria-label') || input.id || ('input_' + i); if (type === 'radio') { if (input.checked) { formData[key] = input.value; } } else if (type === 'checkbox') { if (input.checked) { if (!formData[key]) { formData[key] = []; } formData[key].push(input.value); } } else { formData[key] = input.value; } } // Coleta os campos textarea, se houver var textareas = formRoot.querySelectorAll('textarea'); for (var j = 0; j < textareas.length; j++) { var textarea = textareas[j]; var key = textarea.getAttribute('aria-label') || textarea.id || ('textarea_' + j); formData[key] = textarea.value; } return formData; } // Função para enviar os dados para o dataLayer function pushToDataLayer(formName, formData) { window.dataLayer = window.dataLayer || []; window.dataLayer.push({ 'event': 'gtm.formSubmit', // Nome customizado do evento 'eventCategory': 'Form Submit', 'formName': formName, 'formData': formData }); } // Função para verificar se todos os campos obrigatórios estão preenchidos function areRequiredFieldsFilled() { var formRoot = document.querySelector('[data-hook="form-root"]'); if (!formRoot) return false; // Verifica inputs e textareas que tenham o atributo "required" var requiredFields = formRoot.querySelectorAll('input[required], textarea[required]'); for (var i = 0; i < requiredFields.length; i++) { var field = requiredFields[i]; var type = field.getAttribute('type'); if (type === 'radio') { // Se for radio, verifica se algum dos inputs com o mesmo nome está selecionado if (!formRoot.querySelector('input[name="' + field.name + '"]:checked')) { return false; } } else if (type === 'checkbox') { if (!field.checked) { return false; } } else { if (field.value.trim() === '') { return false; } } } // Verifica o grupo de rádio que não possui o atributo "required" individualmente (ex.: Estado civil) var estadoCivilContainer = formRoot.querySelector('[data-hook="form-field-estado_civil"]'); if (estadoCivilContainer && !estadoCivilContainer.querySelector('input[type="radio"]:checked')) { return false; } return true; } // Função para observar o clique no botão de envio function observeFormSubmission() { // Seleciona o botão de envio pelo atributo data-hook usado no Wix var sendButton = document.querySelector('[data-hook="submit-button"]'); if (sendButton) { sendButton.addEventListener('click', function() { // Se todos os campos obrigatórios estiverem preenchidos... if (areRequiredFieldsFilled()) { var formData = getFormData(); // Altere "Wix Form" para o nome que desejar identificar o formulário pushToDataLayer('Wix Form', formData); } }); } } // Executa a observação após o carregamento do DOM if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', observeFormSubmission); } else { observeFormSubmission(); } })(); </script>
Editor is loading...
Leave a Comment