Corrigir atualização de dados na tabela de militantes

This commit is contained in:
andersonid
2025-04-09 09:20:07 -03:00
committed by LS
parent c640a756df
commit abc46704c3
19 changed files with 2582 additions and 974 deletions

View File

@@ -106,30 +106,87 @@ document.addEventListener('DOMContentLoaded', function() {
});
// Validação de datas
const dateInputs = document.querySelectorAll('input[type="date"]');
const dateInputs = document.querySelectorAll('input[type="date"], input.date-mask');
dateInputs.forEach(input => {
input.addEventListener('change', function() {
const date = new Date(this.value);
const today = new Date();
console.log('Validando data:', this.value);
if (this.hasAttribute('min')) {
const minDate = new Date(this.getAttribute('min'));
if (date < minDate) {
this.setCustomValidity(`A data não pode ser anterior a ${minDate.toLocaleDateString()}`);
this.classList.add('is-invalid');
return;
let dataValida = true;
let mensagemErro = '';
// Se for um campo com máscara, validar o formato
if (this.classList.contains('date-mask')) {
if (!validarData(this.value)) {
dataValida = false;
mensagemErro = 'Por favor, insira uma data válida no formato DD/MM/AAAA';
}
} else {
// Para campos type="date", converter para Date
const date = new Date(this.value);
if (isNaN(date.getTime())) {
dataValida = false;
mensagemErro = 'Data inválida';
}
}
if (this.hasAttribute('max')) {
const maxDate = new Date(this.getAttribute('max'));
if (date > maxDate) {
this.setCustomValidity(`A data não pode ser posterior a ${maxDate.toLocaleDateString()}`);
this.classList.add('is-invalid');
return;
// Validar limites de data
if (dataValida) {
const hoje = new Date();
hoje.setHours(0, 0, 0, 0);
let dataComparacao;
if (this.classList.contains('date-mask')) {
const [dia, mes, ano] = this.value.split('/').map(Number);
dataComparacao = new Date(ano, mes - 1, dia);
} else {
dataComparacao = new Date(this.value);
}
// Verificar data mínima
if (this.hasAttribute('min')) {
const minDate = new Date(this.getAttribute('min'));
if (dataComparacao < minDate) {
dataValida = false;
mensagemErro = `A data não pode ser anterior a ${minDate.toLocaleDateString()}`;
}
}
// Verificar data máxima
if (this.hasAttribute('max')) {
const maxDate = new Date(this.getAttribute('max'));
if (dataComparacao > maxDate) {
dataValida = false;
mensagemErro = `A data não pode ser posterior a ${maxDate.toLocaleDateString()}`;
}
}
// Verificar se é data futura (quando não permitido)
if (this.hasAttribute('data-no-future') && dataComparacao > hoje) {
dataValida = false;
mensagemErro = 'A data não pode ser futura';
}
}
// Atualizar validação do campo
if (!dataValida) {
console.warn('Data inválida:', this.value, mensagemErro);
this.setCustomValidity(mensagemErro);
this.classList.add('is-invalid');
// Atualizar mensagem de feedback
const feedback = this.nextElementSibling;
if (feedback && feedback.classList.contains('invalid-feedback')) {
feedback.textContent = mensagemErro;
}
} else {
console.log('Data válida:', this.value);
this.setCustomValidity('');
this.classList.remove('is-invalid');
}
});
// Limpar validação ao começar a digitar
input.addEventListener('input', function() {
this.setCustomValidity('');
this.classList.remove('is-invalid');
});