Foros del Web » Programando para Internet » Javascript »

this.form.submit() no gatilla onsubmit?

Estas en el tema de this.form.submit() no gatilla onsubmit? en el foro de Javascript en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 11/02/2010, 09:51
Avatar de 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
  #2 (permalink)  
Antiguo 11/02/2010, 10:03
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: this.form.submit() no gatilla onsubmit?

Holas de nuevo.

No he encontrado la respuesta al dilema, pero he implementado una solución.

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="if (revEdit()) { this.form.continuar.value=0; document.getElementById('frmEdit').submit() }">
  <input type="submit" class="button" name="btn_submit" id="btn_submit" value="Guardar">
 </p>

</form> 
Igual espero vuestros comentarios respecto al tema inicial.
Gracias de antemano.
Saludos.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 11/02/2010, 11:07
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: this.form.submit() no gatilla onsubmit?

Hola:

Cuando usas el método submit(), estás forzando el envío, y no activa el evento del mismo nombre... además, con ese método en un botón del tipo button se trata de un envío no_accesible, y por lo tanto no-aconsejable...

El problema tiene una solución más fácil de lo que piensas. Si son 2 botones del tipo submit, y con el mismo nombre, al servidor solo le llega el valor del botón pinchado... es fácil ver el resultado con el método get, leyendo la línea url... por ejemplo:

<form action="" method="get" >
<input type="submit" name="env" value="guardar" />
<input type="submit" name="env" value="guardar_y_salir" />
</form>

Verás en la url al pinchar esto:

?env=guardar o ?env=guardar_y_salir

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 12/02/2010, 09:00
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: this.form.submit() no gatilla onsubmit?

Hola, caricatos.

Ohhh, no sabía que se podía poner varios submit en un formulario, de hecho creía haber leído que por regla no se podía :P jijiji... Voy a probar lo que dices, me serviría muchísimo :)

Pero igual quedo en la duda sobre este nuevo tema —poner más de 1 submit—, si cuando uno está dentro de un formulario, el botón que sea del tipo submit se "activa" (se le ve un borde extra y encima si uno hace Enter sobre un campo del form, se activa ese submit), el que hayan dos o más submit, ¿cómo influye en la apariencia de los botones en el form? ¿se destacan los dos? y ¿cuál es que se ejecuta al presionar Enter?

Gracias por tu atención :)
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Etiquetas: submit
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 21:29.