Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2010, 09:51
Avatar de quinqui
quinqui
 
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
this.form.submit() no gatilla onsubmit?

Holas a todos.

Les cuento mi dilema.

Tengo un formulario para guardar datos en una base; el form tiene 2 botones para guardar dichos datos: "Guardar y Salir" y "Guardar". La razón es simple: facilitar el trabajo del usuario; o sea, no es algo estrictamente necesario.

Este es el extracto de mi código:

Código HTML:
<form name="frmEdit" id="frmEdit" method="post" onsubmit="return revEdit()">

 <input type="hidden" name="confirmar" id="confirmar">
 <input type="hidden" name="continuar" id="continuar" value="1">

 <!-- Aqui van los campos de formulario -->

 <p align="center">
  <input type="reset" class="button" name="btn_reset" id="btn_reset" value="Restaurar Valores">
  <input type="button" class="button" name="btn_salir" id="btn_salir" value="Guardar y Salir" onclick="this.form.continuar.value=0; document.getElementById('frmEdit').submit()">
  <input type="submit" class="button" name="btn_submit" id="btn_submit" value="Guardar">
 </p>

</form> 
Aquí les explico cómo DEBERÍA IR el asunto:

1.- En general, cuando se envíe el form (evento onsubmit) se ejecutará la función revEdit(), que valida los campos del form y retorna booleano dependiendo del resultado de la validación. Si la validación es verdadera, la función asigna al campo "confirmar" el valor 1, que es lo que el php procesador necesita para ejecutarse.

2.- Por defecto, el formulario asume que el usuario querrá seguir editando su registro una vez que lo guarde. Para ello el campo oculto "continuar" se inicia en valor 1.

3.- Cuando se presione el botón "Guardar" (submit) se gatillará el evento onsubmit del form, vale decir, se llamará a la función revEdit() para validar el formulario. Una vez procesado, el php retornará al mismo formulario para seguir editando los datos.

4.- Cuando se presione el botón "Guardar y Salir" (el button) primero se asignará al campo oculto "continuar" el valor 0 y luego ejecutará el método submit() que gatillará el evento onsubmit del form, y al igual que en el punto 3.-, se llamará a la función revEdit() y etc. La diferencia se verá al terminar de procesar, porque el php dirigirá al usuario a la página inicial del sistema.


Ahora bien, el problema está en el punto 4.-
No está gatillándose el evento onsubmit del form al hacer click desde el button y no sé por qué, ya que esto mismo lo he hecho muchas otras veces en otros portales y ahora no me funciona :(

Debugué todo esto con alert() en el onsubmit y en el onclick.
- Con el botón "Guardar" efectivamente entra en el evento (me sale la ventanita).
- Pero con el botón "Guardar y Salir", simplemente no entra (no me sale la ventanita)
- El hecho es que ambos botones envían el formulario, pero el "Guardar y salir" lo envía pero como no entra en la función revEdit(), el valor de "confirmar" nunca cambia y por eso no pasa nada :(

Debo decir que he probado esto sólo en Firefox por ahora, y no me ha arrojado ningún error (la consola).

¿Que será? ¿Me faltará algún código?
Agradeceré mucho sus opiniones.

Gracias de antemano. Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Última edición por quinqui; 11/02/2010 a las 09:58 Razón: Nueva info