image
Inicio » Foros » JavaScript

JavaScript

Formulario en ventana emergente. Submit

Volver al foro | Responder | Añadir nuevo tema


De: jokings80
Fecha: 28/07/2012
Mensaje:

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,

$('#myForm').bind('submit', function(){
parent.$.fancybox.close();
});

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 formualrio. La función sería como,

function validarFormulario() {
//Comprobaciones...

document.forms['myForm'].submit();
}

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!!


Quizás le interese
De: jbosch(vosk)
Util para: 30 personas

Fecha: 19/08/2012
Mensaje:

ten en cuenta que el submit es equivalente a cargar una nueva url, es decir se cancela cualquier script posterior a la linea de submit; de la misma forma, si cierras antes del submit no se produce en envio. lo unico que puedes hacer es usar el evento unload para cerrar la propia ventana (lo estoy comentando de memoria, no lo he probado pero creo recordar que una ventana hija no tiene problemas para cerrarse a si misma)

onUnload = "window.self.close();"

jbosch(vosk)



De: jbosch(vosk)
Util para: 11 personas

Fecha: 19/08/2012
Mensaje:

"...Tengo un formulario en un iframe ..."

en un iframe, ok olvida parte de mi comentario anterior; solo puedes resolverlo a traves del evento onUnload, lo demas es lo mismo. el envio se controla a traves del evento onSubmit del form:

//html/head/script
function valida() {
return (todo_correcto)?true:false;
}

//html/body
<form onSubmit="return valida();">

ademas de esto vas a controlar el evento onUnload para el tag body, que llamará al documento principal para que ese elimine el iframe (o para que lo oculte), de cualquier otra forma no podras resolverlo (o envias o cancelas), a traves del evento onUnload sabes exactamente que se acaba de producir el submit (ojo, si tienes un iframe navegable tendras que usar un flag de submit para saber cuando se produce el unload a causa del submit y cuando no, pero este no es el caso):

<body onUnload="window.parent.cierra();">

ahora en el parent tendras la funcion 'cierra()' que simplemente recoge un puntero al objeto iframe y lo elimina de la lista de nodos:

function cierra() {
var iw = window.parent.document.getElementById('iw');
iw.parentNode.removeChild(iw);
}

lo unico remarcable de todo esto es el metodo para eliminar un nodo: desde si mismo no puede hacerse, de ahi que tengas que 'subir' al nodo anterior para eliminar el nodo contenido.

suerte con eso
jbosch(vosk)



Volver al foro | Responder | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.