• Publicidad

Formulario en ventana emergente. Submit y cerrar

Discute todo acerca de JavaScript así como DHTML o la tecnología AJAX.

Formulario en ventana emergente. Submit y cerrar

Notapor jokings80 » 2012-07-28 06:31 @313

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!!
jokings80
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2012-07-28 06:28 @311

Publicidad

Re: Formulario en ventana emergente. Submit y cerrar

Notapor explorer » 2012-07-28 16:58 @748

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);
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a JavaScript

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado