FinFlow
Crie sua conta
Comece a controlar suas finanças hoje
1
Dados Pessoais
2
Contato
3
Endereço
Nome Completo
Email
Senha
Confirmar Senha
Próximo
CPF/CNPJ
Telefone
Voltar
Próximo
CEP
Endereço
Número
Bairro
Cidade
Estado
Selecione
Acre
Alagoas
Amapá
Amazonas
Bahia
Ceará
Distrito Federal
Espírito Santo
Goiás
Maranhão
Mato Grosso
Mato Grosso do Sul
Minas Gerais
Pará
Paraíba
Paraná
Pernambuco
Piauí
Rio de Janeiro
Rio Grande do Norte
Rio Grande do Sul
Rondônia
Roraima
Santa Catarina
let emailAvailable = false; // Validar campos do step e habilitar/desabilitar botão function validateStep(stepNumber) { const stepEl = document.querySelector(`.form-step[data-step="${stepNumber}"]`); const inputs = stepEl.querySelectorAll('input[required], select[required]'); const button = document.getElementById(`step${stepNumber}-next`) || document.getElementById('register-btn'); let allFilled = true; inputs.forEach(input => { if (!input.value.trim()) { allFilled = false; } }); // Validação especial para step 1 if (stepNumber === 1) { const password = document.getElementById('password').value; const confirmPassword = document.getElementById('confirm-password').value; if (!emailAvailable || !password || !confirmPassword || password !== confirmPassword || password.length < 6) { allFilled = false; } } if (button) { button.disabled = !allFilled; } return allFilled; } // Verificar se email já existe let emailCheckTimeout; const emailInput = document.getElementById('email'); const emailCheckIcon = document.getElementById('email-check-icon'); const emailMessage = document.getElementById('email-message'); emailInput.addEventListener('input', () => { clearTimeout(emailCheckTimeout); const email = emailInput.value.trim(); const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!email || !emailRegex.test(email)) { emailCheckIcon.style.display = 'none'; emailMessage.style.display = 'none'; emailAvailable = false; validateStep(1); return; } emailCheckIcon.style.display = 'block'; emailCheckIcon.className = 'email-check-icon checking'; emailCheckIcon.innerHTML = '
'; emailCheckTimeout = setTimeout(async () => { try { // Validar novamente antes de fazer a requisi��o if (!email || !emailRegex.test(email)) { emailCheckIcon.style.display = 'none'; emailMessage.style.display = 'none'; emailAvailable = false; validateStep(1); return; } const response = await fetch(`api/auth/check-email.php?email=${encodeURIComponent(email)}`); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const text = await response.text(); let data; try { data = JSON.parse(text); } catch (parseError) { console.error('Resposta não é JSON válido:', text); throw new Error('Resposta inválida do servidor'); } if (data.success) { if (data.data.exists) { // Email já existe emailCheckIcon.className = 'email-check-icon taken'; emailCheckIcon.innerHTML = '
'; emailMessage.style.display = 'block'; emailMessage.style.color = '#ef4444'; emailMessage.innerHTML = 'Este email já está cadastrado.
Fazer login?
'; emailAvailable = false; emailInput.classList.add('error'); } else { // Email disponível emailCheckIcon.className = 'email-check-icon available'; emailCheckIcon.innerHTML = '
'; emailMessage.style.display = 'block'; emailMessage.textContent = 'Email disponível!'; emailAvailable = true; emailInput.classList.remove('error'); } } } catch (error) { console.error('Erro ao verificar email:', error); emailCheckIcon.style.display = 'none'; emailAvailable = false; } validateStep(1); }, 500); }); // Adicionar listeners de validação em todos os campos de cada step // Step 1 ['name', 'email', 'password', 'confirm-password'].forEach(id => { const input = document.getElementById(id); if (input) { input.addEventListener('input', () => validateStep(1)); input.addEventListener('blur', () => validateStep(1)); } }); // Step 2 ['cpf', 'phone'].forEach(id => { const input = document.getElementById(id); if (input) { input.addEventListener('input', () => validateStep(2)); input.addEventListener('blur', () => validateStep(2)); } }); // Step 3 ['zipcode', 'street', 'number', 'neighborhood', 'city', 'state'].forEach(id => { const input = document.getElementById(id); if (input) { input.addEventListener('input', () => validateStep(3)); input.addEventListener('change', () => validateStep(3)); input.addEventListener('blur', () => validateStep(3)); } });
São Paulo
Sergipe
Tocantins
Voltar
Cadastrar