Cambiado esquema de deteccion, ahora no se lleva memoria, solo ser cosciente de que algo ha cambiado

This commit is contained in:
imnavajas
2024-04-15 15:27:12 +02:00
parent 2a48b044a6
commit 2fb8c97fd8
2 changed files with 85 additions and 29 deletions

View File

@ -214,6 +214,49 @@
<!-------------------------------------------------------> <!------------------------------------------------------->
<?= $this->section("additionalInlineJs") ?> <?= $this->section("additionalInlineJs") ?>
$(window).on('load', function() {
// Detectar cambios en inputs de texto
$('input[type="text"]').on('input', function() {
console.log("El campo de texto con ID '" + $(this).attr('id') + "' ha cambiado.");
});
// Detectar cambios en inputs de texto
$('input[type="number"]').on('input', function() {
console.log("El campo de texto con ID '" + $(this).attr('id') + "' ha cambiado.");
});
// Detectar cambios en select
$('select').change(function() {
console.log("El campo select con ID '" + $(this).attr('id') + "' ha cambiado.");
});
// Detectar cambios en checkboxes
$('input[type="checkbox"]').change(function() {
console.log("El checkbox con ID '" + $(this).attr('id') + "' ha cambiado.");
});
// Detectar cambios en textareas
$('textarea').on('input', function() {
console.log("El textarea con ID '" + $(this).attr('id') + "' ha cambiado.");
});
// Detectar cambios en otros tipos de input (por ejemplo, radio buttons)
$('input[type="radio"]').change(function() {
console.log("El radio button con ID '" + $(this).attr('id') + "' ha cambiado.");
});
// Detectar cambios en otros tipos de input (por ejemplo, radio buttons)
$('input:not([type])').on('input', function() {
console.log("El valor de un input sin tipo ha cambiado: " + $(this).val());
});
});
/*
// Obtener todos los campos de entrada del formulario // Obtener todos los campos de entrada del formulario
const formInputs = document.querySelectorAll('input, textarea, select'); const formInputs = document.querySelectorAll('input, textarea, select');
@ -223,35 +266,41 @@
const originalValues = {}; const originalValues = {};
// Guardar los valores originales // Guardar los valores originales
formInputs.forEach(function(input) { function saveOriginalValues(inputs) {
if (input.type === 'checkbox') { inputs.forEach(input => {
originalValues[input.id] = input.checked; if (!input.id) return;
} else {
originalValues[input.id] = input.tagName.toLowerCase() === 'select' if (input.type === 'checkbox') {
? $(input).val() // jQuery para obtener el valor de un select2 originalValues[input.id] = input.checked;
: input.value; } else {
} originalValues[input.id] = input.tagName.toLowerCase() === 'select'
}); ? $(input).val() // jQuery para obtener el valor de un select2
: input.value;
}
});
}
// Agregar un evento de cambio a cada campo de entrada // Agregar un evento de cambio a cada campo de entrada
formInputs.forEach(function(input) { function addChangeEvent(inputs) {
if (input.tagName.toLowerCase() === 'select' && $(input).data('select2')) { inputs.forEach(input => {
// Para elementos select2 if (!input.id) return;
$(input).on('change', function() {
verificarCambios(); if (input.tagName.toLowerCase() === 'select' && $(input).data('select2')) {
}); // Para elementos select2
} else { $(input).on('change', verificarCambios);
// Para otros tipos de campos } else {
input.addEventListener('input', function() { // Para otros tipos de campos
verificarCambios(); input.addEventListener('input', verificarCambios);
}); }
} });
}); }
function verificarCambios() { function verificarCambios() {
// Verificar si hay cambios con respecto a los originales // Verificar si hay cambios con respecto a los originales
var cambiosDetectados = Array.from(formInputs).some(function(input) { let cambiosDetectados = Array.from(formInputs).some(input => {
if (!input.id) return false;
return input.type === 'checkbox' return input.type === 'checkbox'
? input.checked !== originalValues[input.id] ? input.checked !== originalValues[input.id]
: input.tagName.toLowerCase() === 'select' : input.tagName.toLowerCase() === 'select'
@ -259,12 +308,10 @@
: input.value !== originalValues[input.id]; : input.value !== originalValues[input.id];
}); });
console.log(cambiosDetectados);
// Mostrar alerta solo si hay cambios // Mostrar alerta solo si hay cambios
if (cambiosDetectados) { showBreadCrumbSaveButton(cambiosDetectados);
showBreadCrumbSaveButton(true);
}else{
showBreadCrumbSaveButton(false);
}
} }
$('#bc-save').on( "click", function() { $('#bc-save').on( "click", function() {
@ -272,7 +319,16 @@
$('#saveForm').click() $('#saveForm').click()
} ); } );
// Llamar a funciones principales
saveOriginalValues(formInputs);
addChangeEvent(formInputs);
*/
$('#bc-save').on( "click", function() {
//showBreadCrumbSaveButton(false);
$('#saveForm').click()
} );
<?= $this->endSection() ?> <?= $this->endSection() ?>