En mi aplicación existen algunos formularios de creación de actualizaciones. Cuando el usuario ingresa valores en el campo de entrada de estos formularios accidentalmente si el usuario presiona el botón Atrás o el botón de recarga del navegador, aparecerá un mensaje de confirmación. He usado el evento 'window.beforeunload' para mostrar la alerta. La alerta está apareciendo bien. Pero hay un problema al que me enfrento. Escenario 1: A veces, la alerta aparece cuando no se ha producido ningún cambio en el campo de entrada y se vuelve a cargar el navegador o se pulsa el botón Atrás. Escenario 2: supongamos que el usuario ingresó algún valor en el campo de entrada y vuelve a cargar el mensaje de confirmación del navegador. El usuario permite recargar la página. Después de recargar la página, si el usuario desea abandonar la página, aún aparece el mensaje de confirmación. No puedo entender por qué aparece el mensaje después de permitir que la página se vuelva a cargar. Estoy usando el siguiente código -
$(document).ready(function(){ //ArrElem is an array which is holding the initial value of each field when the form open $('#dvModal').on('change paste', 'select,input,textarea', function (e) { if (typeof ArrElem != 'undefined') { for (var i = ArrElem.length; i--;) { if (ArrElem[i].indexOf($(this).attr('id')) >= 0) { if ($(this).attr('type') == "checkbox" && ($(this).is(":checked").toString() != ArrElem[i].split(',')[1])) { ischanged = true; } else if ($(this).attr('type') != "checkbox" && $(this).val() != ArrElem[i].split(',')[1]) { ischanged = true; } else ischanged = false; break; } } } else { if ($(this).val() != $(this).data('val')) { ischanged = true; } else ischanged = false; } }); }); /// Using this code to display the alert when click on back,reload button of the browser window.addEventListener("beforeunload", (e) => { if (ischanged) { e.returnValue = null; ischanged = false; return null; } });Probablemente estoy cometiendo algún error. Si es así, sugiérame qué lógica incorrecta estoy usando aquí. Si existe algún otro enfoque, por favor sugiérame. Necesito implementar esta característica muy común en mi aplicación, pero tengo problemas.
Gracias por adelantado.
Soumen