Página 1 de 1

Formulario en ventana emergente. Submit y cerrar

NotaPublicado: 2012-07-28 06:31 @313
por jokings80
Hola,

Tengo un formulario en un iframe en una ventana fancybox y lo que quiero es que al pulsar el botón para enviar el formulario, que está dentro de la ventana, se envíe y se cierre la venta fancybox. Esto lo consigo haciendo

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. $('#myForm').bind('submit', function(){
  2.         parent.$.fancybox.close();
  3. });
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


de forma que al pulsar el botón se envía el formulario y después se cierra la ventana fancybox.

Antes de enviar el formulario, quiero procesar algunos campos con una función JavaScript para comprobar que tienen un determinado formato. Lo que hago es que el botón que envía el formulario sea de tipo "button" y llama a una función para validar el formulario. Dentro de esta función, si los campos son correctos se envía el formulario. La función sería como,

Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. function validarFormulario() {
  2.         //Comprobaciones...
  3.  
  4.         document.forms['myForm'].submit();
  5. }
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El problema está en que de esta forma, se envía el formulario, pero no se cierra la ventana modal. Es como si el evento "submit" de la función "validarFormulario" no fuera reconocido por el "bind".

¿Se os ocurre dónde puede estar el error o alguna solución?

¡¡Gracias por la ayuda!!

Re: Formulario en ventana emergente. Submit y cerrar

NotaPublicado: 2012-07-28 16:58 @748
por explorer
Bienvenido a los foros de Perl en Español, jokings80.

Yo probaría con lo más sencillo: en el <form> pongo un atributo OnSubmit que llame a validarFormulario():

<form ... onsubmit="javascript:validarFormulario(); return false">

El "return false" hace que el formulario no se envíe por si mismo. De esa manera, se depende solo de lo que haga validarFormulario().

Dentro de esa función, compruebo las entradas del formulario, y si todo es correcto, cierro el iframe:

var iframe = window.parent.document.getElementById('fancybox');
iframe.parentNode.removeChild(iframe);