fix: corrige comportamento dos campos de data para manter calendário e formato brasileiro
This commit is contained in:
@@ -18,6 +18,7 @@ function formatarData(data) {
|
|||||||
// Função para converter data de DD/MM/YYYY para YYYY-MM-DD
|
// Função para converter data de DD/MM/YYYY para YYYY-MM-DD
|
||||||
function converterDataParaISO(data) {
|
function converterDataParaISO(data) {
|
||||||
if (!data) return '';
|
if (!data) return '';
|
||||||
|
if (data.includes('-')) return data; // Já está no formato ISO
|
||||||
const [dia, mes, ano] = data.split('/');
|
const [dia, mes, ano] = data.split('/');
|
||||||
return `${ano}-${mes}-${dia}`;
|
return `${ano}-${mes}-${dia}`;
|
||||||
}
|
}
|
||||||
@@ -168,6 +169,41 @@ function filtrarMilitantes() {
|
|||||||
updatePagination();
|
updatePagination();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Função para configurar um campo de data
|
||||||
|
function configurarCampoData(campo) {
|
||||||
|
if (!campo) return;
|
||||||
|
|
||||||
|
// Criar um campo de texto para exibição
|
||||||
|
const campoTexto = document.createElement('input');
|
||||||
|
campoTexto.type = 'text';
|
||||||
|
campoTexto.className = campo.className;
|
||||||
|
campoTexto.placeholder = 'dd/mm/aaaa';
|
||||||
|
campoTexto.readOnly = true; // Evita edição manual
|
||||||
|
|
||||||
|
// Esconder o campo original mas manter ao lado
|
||||||
|
campo.type = 'date';
|
||||||
|
campo.style.position = 'absolute';
|
||||||
|
campo.style.left = '-9999px';
|
||||||
|
|
||||||
|
// Inserir o campo de texto antes do campo de data
|
||||||
|
campo.parentNode.insertBefore(campoTexto, campo);
|
||||||
|
|
||||||
|
// Se já tiver valor, formatar
|
||||||
|
if (campo.value) {
|
||||||
|
campoTexto.value = formatarData(campo.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Quando o campo original mudar, atualizar o texto
|
||||||
|
campo.addEventListener('change', function() {
|
||||||
|
campoTexto.value = this.value ? formatarData(this.value) : '';
|
||||||
|
});
|
||||||
|
|
||||||
|
// Quando clicar no campo de texto, abrir o calendário
|
||||||
|
campoTexto.addEventListener('click', function() {
|
||||||
|
campo.showPicker();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Configurar eventos quando o DOM estiver carregado
|
// Configurar eventos quando o DOM estiver carregado
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
console.log('DOM carregado, configurando eventos...');
|
console.log('DOM carregado, configurando eventos...');
|
||||||
@@ -229,7 +265,10 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
|
|
||||||
console.log('Configurando modal de edição...');
|
console.log('Configurando modal de edição...');
|
||||||
|
|
||||||
// Configuração do modal de edição
|
// Configurar campos de data
|
||||||
|
document.querySelectorAll('input[type="date"]').forEach(configurarCampoData);
|
||||||
|
|
||||||
|
// Configurar modal de edição
|
||||||
const modalEditarMilitante = document.getElementById('modalEditarMilitante');
|
const modalEditarMilitante = document.getElementById('modalEditarMilitante');
|
||||||
|
|
||||||
if (modalEditarMilitante) {
|
if (modalEditarMilitante) {
|
||||||
@@ -290,9 +329,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
'edit_nome': dados.nome,
|
'edit_nome': dados.nome,
|
||||||
'edit_cpf': dados.cpf,
|
'edit_cpf': dados.cpf,
|
||||||
'edit_titulo_eleitoral': dados.titulo_eleitoral,
|
'edit_titulo_eleitoral': dados.titulo_eleitoral,
|
||||||
'edit_data_nascimento': dados.data_nascimento ? formatarData(dados.data_nascimento) : '',
|
'edit_data_nascimento': dados.data_nascimento,
|
||||||
'edit_data_entrada': dados.data_entrada_oci ? formatarData(dados.data_entrada_oci) : '',
|
'edit_data_entrada': dados.data_entrada_oci,
|
||||||
'edit_data_efetivacao': dados.data_efetivacao_oci ? formatarData(dados.data_efetivacao_oci) : '',
|
'edit_data_efetivacao': dados.data_efetivacao_oci,
|
||||||
'edit_telefone1': dados.telefone1,
|
'edit_telefone1': dados.telefone1,
|
||||||
'edit_telefone2': dados.telefone2,
|
'edit_telefone2': dados.telefone2,
|
||||||
'edit_email': dados.email,
|
'edit_email': dados.email,
|
||||||
@@ -319,11 +358,16 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
// Preencher cada campo se ele existir
|
// Preencher cada campo se ele existir
|
||||||
Object.entries(campos).forEach(([id, valor]) => {
|
Object.entries(campos).forEach(([id, valor]) => {
|
||||||
const campo = document.getElementById(id);
|
const campo = document.getElementById(id);
|
||||||
if (campo && valor !== undefined && valor !== null) {
|
if (campo) {
|
||||||
campo.value = valor;
|
|
||||||
// Se for campo de data, ajustar o tipo para text
|
|
||||||
if (campo.type === 'date') {
|
if (campo.type === 'date') {
|
||||||
campo.type = 'text';
|
// Para campos de data, atualizar também o campo de texto
|
||||||
|
campo.value = valor || '';
|
||||||
|
const campoTexto = campo.previousElementSibling;
|
||||||
|
if (campoTexto && campoTexto.type === 'text') {
|
||||||
|
campoTexto.value = valor ? formatarData(valor) : '';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
campo.value = valor || '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -384,13 +428,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
console.log('Enviando formulário de edição...');
|
console.log('Enviando formulário de edição...');
|
||||||
|
|
||||||
// Converter datas para formato ISO antes do envio
|
// Os campos de data já estarão no formato ISO, não precisa converter
|
||||||
const camposData = this.querySelectorAll('input[type="text"][name*="data"]');
|
|
||||||
camposData.forEach(campo => {
|
|
||||||
if (campo.value) {
|
|
||||||
campo.value = converterDataParaISO(campo.value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Coletar responsabilidades selecionadas
|
// Coletar responsabilidades selecionadas
|
||||||
const responsabilidades = [];
|
const responsabilidades = [];
|
||||||
@@ -479,13 +517,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
formNovoMilitante.addEventListener('submit', function(e) {
|
formNovoMilitante.addEventListener('submit', function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
// Converter datas para formato ISO antes do envio
|
// Os campos de data já estarão no formato ISO, não precisa converter
|
||||||
const camposData = this.querySelectorAll('input[type="text"][name*="data"]');
|
|
||||||
camposData.forEach(campo => {
|
|
||||||
if (campo.value) {
|
|
||||||
campo.value = converterDataParaISO(campo.value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const formData = new FormData(this);
|
const formData = new FormData(this);
|
||||||
|
|
||||||
@@ -746,35 +778,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Configurar campos de data para formato brasileiro
|
|
||||||
const camposData = document.querySelectorAll('input[type="date"]');
|
|
||||||
camposData.forEach(campo => {
|
|
||||||
// Quando o campo receber foco, usar o formato ISO para o input type="date"
|
|
||||||
campo.addEventListener('focus', function() {
|
|
||||||
if (this.value) {
|
|
||||||
const dataISO = converterDataParaISO(this.value);
|
|
||||||
this.type = 'date';
|
|
||||||
this.value = dataISO;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Quando o campo perder foco, mostrar no formato brasileiro
|
|
||||||
campo.addEventListener('blur', function() {
|
|
||||||
if (this.value) {
|
|
||||||
const dataBR = formatarData(this.value);
|
|
||||||
this.type = 'text';
|
|
||||||
this.value = dataBR;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Inicializar com o formato brasileiro se já tiver valor
|
|
||||||
if (campo.value) {
|
|
||||||
const dataBR = formatarData(campo.value);
|
|
||||||
campo.type = 'text';
|
|
||||||
campo.value = dataBR;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Inicializar paginação
|
// Inicializar paginação
|
||||||
updateVisibleRows();
|
updateVisibleRows();
|
||||||
updatePagination();
|
updatePagination();
|
||||||
|
|||||||
Reference in New Issue
Block a user