He creado rutinas para grabar y validar que funcionan bien.
La última que he creado hace que cada vez que un campo (el que sea) se modifique su contenido, se coloque un valor en un campo input hidden de control de manera tal que cuando el usuario pretenda salir de la página se dispare un evento onUnload que llama a una funcion que lo único que hace es ver que el campo hidden de control tenga o no un valor pre-determinado (en este caso es "ok")
Si el campo tiene "ok" entonces quiere decir que se ha realizado una modificación y aquí viene mi dilema. La función es la siguiente:
Código:
La función para grabar funciona perfectamente bien SI se invoca de manera normal, esto es, por medio de un boton que llame a la función en cuestión. Pero, si por ejemplo, el usuario se quiere ir a otro registro (la pantalla esta paginada) es como si estuviera cerrando la ventana o haciendo un "back" (cosa que por script no puede hacer por cierto) y claro, se dispara el evento onUnload y pregunta lo que ven que pregunta. Si hago clic en aceptar grabar antes de partir simplemente no se ejecuta PORQUE la rutina de grabación contempla de que si el registro ya existe le pregunta (tiene que hacerlo) al usuario si desea actualizar la información o no.function verificarCambios() { var guia=document.registros.controlModificaciones.value; if(guia=="ok") { if(confirm("Se han realizado cambios al presente registro.\n¿Desea grabarlos antes de salir?")) {//invoca a la función que uso para grabar previa validación de datos de ser necesario} else {alert("Operación cancelada por el usuario.");} } }
Ahora, lo que busco aquí es alguna función que haga algo como esto
Código:
Eso mismo, que si el usuario dice si acepto en grabar, lo primero que suceda es que se cancele la operación de abandono de página para que luego pueda llamar a la función grabar y seguir todo normal.function verificarCambios() { var guia=document.registros.controlModificaciones.value; if(guia=="ok") { if(confirm("Se han realizado cambios al presente registro.\n¿Desea grabarlos antes de salir?")) {//DETIENE TODO PROCESO DE ABANDONO DE PÁGINA} else {alert("Operación cancelada por el usuario.");} } }
Espero en verdad haberme dejado entender.
Estaré al tanto de las sugerencias que me puedan brindar.
Mil gracias!!!!!!!!!!!!!!