Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Ejecucion secuencial

Estas en el tema de Ejecucion secuencial en el foro de Javascript en Foros del Web. Hola. Me estoy enfrentando a un problema y no encuentro solucion, a ver si un alma caritativa es capaz de llevarme hacia la luz.... Tengo ...
  #1 (permalink)  
Antiguo 10/09/2014, 08:51
Avatar de kastesponja  
Fecha de Ingreso: febrero-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Ejecucion secuencial

Hola.

Me estoy enfrentando a un problema y no encuentro solucion, a ver si un alma caritativa es capaz de llevarme hacia la luz....

Tengo un formulario (normal y corriente) con sus campos y en una funcion JavaScript hago un submit de ese formulario.

El problema es que lo que yo quiero es que el resto de la funcion (todo lo que hay despues del submit) se ejecute SOLO cuando haya acabado el submit.

Es decir, actualmente yo ejecuto mi funcion y se lanza el submit, pero se continúa la ejecución de la función y termina antes de que se haya terminado el submit. Yo lo que quiero es que el resto de la funcion espere a que el submit termine y, solo entonces, continúe.

No se si habrá algun tipo de disparador, flag o similar que se retorne de un submit, pero lo desconozco.

Saludos y gracias.
  #2 (permalink)  
Antiguo 10/09/2014, 10:33
 
Fecha de Ingreso: abril-2013
Mensajes: 60
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Ejecucion secuencial

imagino que agregaste el evento "onclick" al botón de tu formulario algo asi onclick="xxxx()", entonces tal botón debería ser de tipo "button" y no "submit",
<input type="button" onclick="xxxx()" value="mi botón" /> o <button type="button" onclick="xxxx()" >mi botón</button>

después en tu función deberías tener algo así:

function xxxx (){
...
.../*lo que quieres que haga antes del submit*/
.
..
//this.form.submit();
//document.forms.nombreDelFormulario.submit();
document.getElementById("miFormulario").submit();
}

nose si es lo que buscas, salu2
  #3 (permalink)  
Antiguo 11/09/2014, 00:08
Avatar de kastesponja  
Fecha de Ingreso: febrero-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ejecucion secuencial

Efectivamente eso es lo que tengo, pero lo que quiero hacer es otra cosa, me explico un poco mas.

Yo tengo mi boton:
<button type="button" onclick="fncCosa()" >mi botón</button>

Y tengo la funcion a la que llama:
function fncCosa(){
...
.../*lo que quiero que haga antes del submit*/
...
...
document.getElementById("miFormulario").submit();
...
.../*lo que quiero que haga despues del submit*/
...
...
}



Lo que quiero es que la parte posterior al submit se haga solo cuando acabe la ejecucion del mismo.
Si en esa parte yo pongo un alert, salta inmediatamente, aunque la ejecucion de la parte java (a la que llama el submit) se siga ejecutando.

¿Hay forma de hacer que ese alert que yo pongo despues del submit se haga solo cuando termine de ejecutarse lo invocado por el submit?.
  #4 (permalink)  
Antiguo 11/09/2014, 02:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Ejecucion secuencial

Hola:

Lo correcto es usar un botón submit, y programar el mismo evento del formulario...
Luego del envío siempre será secuencial el resto de instrucciones, siempre que el envío sea fuera de la misma página (tener definido el atributo target del formulario...)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 11/09/2014, 03:11
Avatar de kastesponja  
Fecha de Ingreso: febrero-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ejecucion secuencial

Creo que no lo he entendido muy bien (lo siento, soy duro....).

Si no me equivoco, a la hora de abrir una ventana modal se puede hacer esto:

if(window.showModalDialog){
var nwin = window.showModalDialog(....);
}
...
.../*codigo a ejecutar tras el retorno de la ventana*/
.../*este codigo solo se ejecutara una vez se cierre la ventana modal abierta*/
...


Yo lo que necesito es este mismo funcionamiento pero con un submit, es decir, que hasta que no retorne el submit no se ejecute el resto.
Por desgracia tengo que seguir unas directrices muy marcadas y tengo que hacer la invocacion asi, no puedo usar el boton submit, sino que tengo que ejecutar esa funcion (realmente no tengo control sobre el boton, no es mio, solo sobre la funcion, por eso no lo puedo modificar).
  #6 (permalink)  
Antiguo 11/09/2014, 03:50
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Ejecucion secuencial

Hola:

Nunca he usado showmodaldialog (no me gusta), pero los formularios pueden enviarse a ventanas normales: Formularios y enlaces dirigidos a ventanas

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 11/09/2014, 04:24
Avatar de kastesponja  
Fecha de Ingreso: febrero-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ejecucion secuencial

Lo del ShowModalDialog era solo un ejemplo, yo tampoco lo uso mucho.

El problema no viene al enviar el formulario, es al retornar.

En el enlace que me envias (gracias) he visto el metodo "confirm".
Con el puedo hacer esto:

//codigo antes del submit
var resultado = confirm(formulario.submit());
//codigo despues del submit

Es casi lo que quiero...
Asi se me abre una ventana del tipo aceptar/cancelar y solo cuando pulso aceptar se hace el submit y el resto del codigo esta a la espera de que pulse. Lo que quiero es algo asi, pero sin pulsar aceptar. Que el codigo este a la espera no de que pulse un boton, sino de que termine el codigo que lanza el submit.
  #8 (permalink)  
Antiguo 11/09/2014, 04:42
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Ejecucion secuencial

Supongo que tendrás que utilizar el evento onsubmit...
  #9 (permalink)  
Antiguo 11/09/2014, 05:17
Avatar de kastesponja  
Fecha de Ingreso: febrero-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ejecucion secuencial

Corrigeme si me equivoco pero el evento onSubmit ¿no hace que se ejecute antes del submit?.

Quiero decir que si yo pongo:

<form onsubmit="return comprobar()"...>

Lo que hace es ejecutar la funcion "comprobar" y si retorna "true" realiza el submit.

Lo que necesito es que se ejecute despues del submit, no antes.
  #10 (permalink)  
Antiguo 11/09/2014, 05:24
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Ejecucion secuencial

Después de hacer submit la página se va o se vuelve a cargar, no creo que se pueda hacer
  #11 (permalink)  
Antiguo 11/09/2014, 05:58
Avatar de kastesponja  
Fecha de Ingreso: febrero-2008
Mensajes: 12
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Ejecucion secuencial

Ya, asi estoy....

Dando mil vueltas por internet he visto esta pagina:
http://www.west-wind.com/wconnect/weblog/ShowEntry.blog?id=899

Cuyo titulo es:
Showing a Wait Message when submitting longer Requests

Y es justo lo que quiero.

He visto que usa JQuery para hacerlo y usa estas lineas:
<script>
$("#form1").submit(function() {
$("#WaitDialog").modalDialog();
});
</script>


En ellas, hace un submit del form1 y muestra en una ventana modal el contenido de WaitDialog mientras se hace.

Es justo eso lo que necesito, seria la solucion a todos mis problemas, pero no tengo claro como hacerlo (que no me funciona, vaya!!!).

¿Alguien sabe de JQuery y me puede guiar por este camino?

P.D. Tambien me vale esto:

Show wait message on submit
http://forums.asp.net/t/1620326.aspx?Show+wait+message+on+submit

<script type="text/javascript">
$(function () {
$('#<%= Button1.ClientID %>').click(function () {
$.blockUI({ message: '<h1>Sumitting your request..</h1>' });
});
});
</script>

Pero tampoco lo hago funcionar...
  #12 (permalink)  
Antiguo 11/09/2014, 08:49
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Ejecucion secuencial

Cita:
Iniciado por kastesponja Ver Mensaje
He visto que usa JQuery para hacerlo y usa estas lineas:
<script>
$("#form1").submit(function() {
$("#WaitDialog").modalDialog();
});
</script>


En ellas, hace un submit del form1 y muestra en una ventana modal el contenido de WaitDialog mientras se hace.
Es un handler, no un callback

En otras palabras, estás haciendo lo mismo que te dije del onsubmit pero con una librería y dices que es la solución...

Creo que la única forma de hacer lo que quieres es enviando el formulario vía AJAX.

Última edición por PHPeros; 11/09/2014 a las 08:54
  #13 (permalink)  
Antiguo 12/09/2014, 02:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Respuesta: Ejecucion secuencial

Hola:

Si te decides a enviar el formulario a una ventana, la secuencialidad puedes conseguirla usando el evento submit del formulario (evitando devolver el valor false para no cancelarlo) con las instrucciones anteriores al envío; y si pretendes ejecutar más instrucciones, puedes programarlas con el evento de carga de la ventana destino (load).

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:24.