From 2fb8c97fd8eae394e47ecb519633434b96612f6a Mon Sep 17 00:00:00 2001 From: imnavajas Date: Mon, 15 Apr 2024 15:27:12 +0200 Subject: [PATCH] Cambiado esquema de deteccion, ahora no se lleva memoria, solo ser cosciente de que algo ha cambiado --- .../_datosPresupuestoItems.php | 2 +- .../viewCosidotapablandaForm.php | 112 +++++++++++++----- 2 files changed, 85 insertions(+), 29 deletions(-) diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php index 2745c180..9aa9fefe 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosPresupuestoItems.php @@ -173,4 +173,4 @@ - \ No newline at end of file + diff --git a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php index 71c11fdb..2e24d20e 100755 --- a/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php +++ b/ci4/app/Views/themes/backend/vuexy/form/presupuestos/cosidotapablanda/viewCosidotapablandaForm.php @@ -214,6 +214,49 @@ 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 const formInputs = document.querySelectorAll('input, textarea, select'); @@ -223,35 +266,41 @@ const originalValues = {}; // Guardar los valores originales - formInputs.forEach(function(input) { - if (input.type === 'checkbox') { - originalValues[input.id] = input.checked; - } else { - originalValues[input.id] = input.tagName.toLowerCase() === 'select' - ? $(input).val() // jQuery para obtener el valor de un select2 - : input.value; - } - }); + function saveOriginalValues(inputs) { + inputs.forEach(input => { + if (!input.id) return; + + if (input.type === 'checkbox') { + originalValues[input.id] = input.checked; + } 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 - formInputs.forEach(function(input) { - if (input.tagName.toLowerCase() === 'select' && $(input).data('select2')) { - // Para elementos select2 - $(input).on('change', function() { - verificarCambios(); - }); - } else { - // Para otros tipos de campos - input.addEventListener('input', function() { - verificarCambios(); - }); - } - }); + function addChangeEvent(inputs) { + inputs.forEach(input => { + if (!input.id) return; + + if (input.tagName.toLowerCase() === 'select' && $(input).data('select2')) { + // Para elementos select2 + $(input).on('change', verificarCambios); + } else { + // Para otros tipos de campos + input.addEventListener('input', verificarCambios); + } + }); + } function verificarCambios() { // 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' ? input.checked !== originalValues[input.id] : input.tagName.toLowerCase() === 'select' @@ -259,12 +308,10 @@ : input.value !== originalValues[input.id]; }); + console.log(cambiosDetectados); + // Mostrar alerta solo si hay cambios - if (cambiosDetectados) { - showBreadCrumbSaveButton(true); - }else{ - showBreadCrumbSaveButton(false); - } + showBreadCrumbSaveButton(cambiosDetectados); } $('#bc-save').on( "click", function() { @@ -272,7 +319,16 @@ $('#saveForm').click() } ); + // Llamar a funciones principales + saveOriginalValues(formInputs); + addChangeEvent(formInputs); +*/ + + $('#bc-save').on( "click", function() { + //showBreadCrumbSaveButton(false); + $('#saveForm').click() + } ); endSection() ?>