Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
Después de volver a cargar el navegador, el evento window.beforeunload aún muestra la alerta de confirmación cuando intenta existir la página

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

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda