2010-02-28 18 views
5

¿Cómo puedo lograr lo siguiente utilizando jQuery: abra una ventana emergente que devuelve un valor a la ventana principal cuando se hace clic en un enlace en la ventana secundaria, cierre la ventana secundaria y luego tenga el padre envía automáticamente un formulario basado en el valor devuelto?Ventana emergente jQuery Valor devuelto a principal

Me doy cuenta de que jQuery Dialog es una solución popular, pero necesito una ventana emergente porque los contenidos de la ventana deben ser navegables, y quiero evitar el uso de un iframe en el diálogo de jQuery.

La ventana emergente se utilizará para recopilar más de un valor, en última instancia, se devolverá como una cadena delimitada a la principal, pero esta recopilación de datos debe producirse antes de la presentación del formulario de la ventana principal. Si hubiera un patrón de diseño estándar para un "Selector de Entidades", este sería el caso.

Esto tiene que trabajar en IE8, FF3.6, Safari 4 y Chrome 5.

Gracias, Marcos

+0

¿Por qué necesitas el contenido de la ventana navegable? Eso no tiene sentido: si desea tener una ventana emergente para el formulario de una página, ¿por qué permitir que el usuario navegue en otro lugar? –

+0

Porque la ventana emergente se utilizará para recopilar más de un valor, en última instancia, se devolverá como una cadena delimitada a la principal, pero esta recopilación de datos debe producirse antes de la presentación del formulario de la ventana principal. Si hubiera un patrón de diseño estándar para un "Selector de Entidades", este sería el caso. –

Respuesta

6

Aquí está mi solución:

var parent = $(parent.document.body); 
$(parent).find('input#valStore').val(theVal); 
$(parent).find('form#myForm').submit(); 
window.close(); 
6

En la ventana del navegador de reciente apertura que podría intentar algo así como

$("#mylink").click(function(){ 
     value = /* get some value */ 
     window.opener.$("#myform .somehiddenfield").val(value); 
     window.opener.$("#myform").submit(); 
     window.close(); 
}); 

DESCARGO DE RESPONSABILIDAD: No he probado esto en ningún navegador.

+0

Gracias por la respuesta, pero "obtener algún valor" es un poco vago para mí. ¿Qué sucede si ese valor proviene del estado de la sesión de la aplicación, por ejemplo? ¿Cómo asignaría eso en tu ejemplo? –

+0

Entonces lo renderizaría así: value = '<% = Session ["mykey"]%>'. Pero si el valor proviene del estado de la sesión, ¿por qué necesitarías pasarlo entre ventanas? Esperaba que lo obtuviera de un campo de entrada (cuadro de texto) en la ventana secundaria. Entonces sería value = $ ('input.sometextbox'). Val(); – Rune

+0

Edité mi pregunta original para aclarar. La ventana emergente se usa para explorar el sistema y recopilar varias referencias de entidades, y luego volver a pasarlas al elemento primario como una cadena delimitada. Puede pensar que esto es análogo a un carrito de compras, donde los elementos seleccionados se almacenan en estado de sesión. –

Cuestiones relacionadas