fix: corrige validação e salvamento do formulário de edição de militante - Corrige validação do email, ajusta conversão de datas, corrige CSRF token e melhora feedback visual
This commit is contained in:
@@ -317,7 +317,7 @@ async function carregarDadosMilitante(militanteId) {
|
||||
const emailElement = document.getElementById('edit_email');
|
||||
if (emailElement) {
|
||||
if (data.emails && data.emails.length > 0) {
|
||||
emailElement.value = data.emails[0].endereco_email;
|
||||
emailElement.value = data.emails[0]; // O email já vem como string
|
||||
} else {
|
||||
emailElement.value = '';
|
||||
}
|
||||
@@ -568,7 +568,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
const emailElement = document.getElementById('edit_email');
|
||||
if (emailElement) {
|
||||
if (data.emails && data.emails.length > 0) {
|
||||
emailElement.value = data.emails[0].endereco_email;
|
||||
emailElement.value = data.emails[0]; // O email já vem como string
|
||||
} else {
|
||||
emailElement.value = '';
|
||||
}
|
||||
@@ -667,10 +667,41 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
formEditarMilitante.addEventListener('submit', async function(event) {
|
||||
event.preventDefault();
|
||||
console.log('Formulário de edição enviado');
|
||||
|
||||
// Validar todos os campos antes do envio
|
||||
const form = this;
|
||||
form.classList.add('was-validated');
|
||||
|
||||
// Verificar se o formulário é válido
|
||||
if (!form.checkValidity()) {
|
||||
event.stopPropagation();
|
||||
|
||||
// Encontrar o primeiro campo inválido
|
||||
const invalidField = form.querySelector(':invalid');
|
||||
if (invalidField) {
|
||||
// Encontrar a aba que contém o campo inválido
|
||||
const tabPane = invalidField.closest('.tab-pane');
|
||||
if (tabPane) {
|
||||
// Ativar a aba
|
||||
const tabId = tabPane.id;
|
||||
const tab = document.querySelector(`button[data-bs-target="#${tabId}"]`);
|
||||
if (tab) {
|
||||
const bsTab = new bootstrap.Tab(tab);
|
||||
bsTab.show();
|
||||
|
||||
// Focar no campo inválido após a aba ser exibida
|
||||
setTimeout(() => {
|
||||
invalidField.focus();
|
||||
}, 200);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Se chegou aqui, o formulário é válido
|
||||
// Obter ID do militante
|
||||
const militanteId = document.getElementById('edit_militante_id').value;
|
||||
console.log('ID do militante:', militanteId);
|
||||
|
||||
if (!militanteId) {
|
||||
console.error('ID do militante não encontrado');
|
||||
@@ -679,24 +710,21 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
|
||||
// Criar FormData com todos os campos
|
||||
const formData = new FormData(this);
|
||||
const formData = new FormData(form);
|
||||
|
||||
// Garantir que o valor das responsabilidades seja enviado
|
||||
const responsabilidadesValue = document.getElementById('responsabilidades_values').value;
|
||||
formData.set('responsabilidades_valor', responsabilidadesValue);
|
||||
console.log('Valor das responsabilidades sendo enviado:', responsabilidadesValue);
|
||||
|
||||
try {
|
||||
// Construir URL
|
||||
const url = `/militantes/editar/${militanteId}`;
|
||||
console.log('URL da requisição:', url);
|
||||
const csrfToken = document.querySelector('input[name="csrf_token"]').value;
|
||||
|
||||
// Enviar requisição
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'X-CSRF-Token': getCsrfToken()
|
||||
'X-CSRF-Token': csrfToken
|
||||
},
|
||||
body: formData
|
||||
});
|
||||
@@ -706,17 +734,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
console.log('Resposta do servidor:', data);
|
||||
|
||||
if (data.status === 'success') {
|
||||
// Fechar modal
|
||||
const modal = bootstrap.Modal.getInstance(document.getElementById('modalEditarMilitante'));
|
||||
modal.hide();
|
||||
|
||||
// Mostrar mensagem de sucesso
|
||||
mostrarAlerta('Militante atualizado com sucesso!', 'success');
|
||||
|
||||
// Recarregar página após um pequeno delay para a mensagem ser vista
|
||||
setTimeout(() => {
|
||||
location.reload();
|
||||
}, 1000);
|
||||
|
||||
Reference in New Issue
Block a user