2009-07-05 14 views
6

Utilicé JavaScript para abrir una nueva ventana (secundaria) cuando el usuario hace clic en el botón desde la ventana principal.jquery puede hacer esto? ventana emergente para el valor

En la nueva ventana (secundaria), tengo el cuadro de texto y el botón, necesito obtener el valor del cuadro de texto y pasar a la ventana principal cuando el usuario hace clic en el botón, al cerrar la ventana secundaria necesito el valor actualizado insertado en ventana principal (sin refrescar la ventana principal) para que pueda mostrar mi valor a algún campo/etiqueta oculta de la ventana principal, ¿cómo puedo hacer eso? 1- ventana principal tiene botón, ventana infantil clicada abierta 2- ventana infantil tiene cuadro de texto y botón, cuando se hace clic, el niño hará una publicación en el servidor para actualizar la base de datos, luego pasará el refrescar la ventana principal y cerrar la ventana secundaria.

¿Cómo puedo hacer eso? ¿Se puede hacer con JavaScript simple? Si lo hago usando jquery, ¿tendré más beneficios? ¿Alguien podría aconsejarme cómo puedo hacerlo?

Respuesta

14

se recomienda usar el jQuery dialog widget en lugar de una, nueva ventana real. Esto facilitará el acceso al nuevo valor ya que está en el DOM de la misma ventana. Simplemente haga que la devolución de llamada desde el botón que cierra la ventana extraiga el valor del elemento DOM contenido en el cuadro de diálogo y cópielo al elemento DOM objetivo en el formulario.

$('#popupDialog').dialog({ 
    modal: true, 
    autoOpen: false, 
    buttons: { 
      'Cancel': function() { 
         $(this).dialog('close'); 
        }, 
      'Accept': function() { 
         $('#mainForm input#target').val($(this).find('#widgetName').val()); 
         $(this).dialog('close'); 
        } 
}); 

$('#popupButton').click(function() { 
    $('#popuDialog').dialog('open'); 
}); 


<div id="popupDialog" title="Input a new widget name"> 
    <p> 
    <label for="widgetName">Please input a new widget name:</label> 
    <input type="text" id="widgetName" /> 
    </p> 
</div> 
+0

Hay casos en que esta no es la mejor solución, aunque estoy de acuerdo con ir esta ruta para la mayoría de los usos clásicos de ventanas emergentes. En mi caso, tengo una ventana principal con varias fuentes de cámara web y quiero que aparezca una nueva ventana cuando el usuario haga clic en un botón emergente. La nueva ventana es solo la fuente de la cámara web en la que hicieron clic. Para los 6 feeds, la nueva ventana será idéntica salvo la URL de origen. Tener la ventana primaria guarda la necesidad de 6 archivos HTML casi idénticos. Y tenerlos como ventanas nuevas permite al usuario tener las alimentaciones de cámara en cualquier lugar de la pantalla sin la ventana principal abierta. – Anthony

4

Absolutamente: usted está buscando para el nativo JS * abridor de propiedad (discusión here), no se requiere jQuery (aunque puede ser envuelto por allí).

La apertura y el cierre de Windows es una forma bastante no 2.0 de hacer las cosas, ¿no preferiría tener una caja de luz o un cuadro de diálogo similar basado en HTML en la página? El diálogo jQuery ciertamente sería el camino a seguir para eso.

* así, universalmente soportado si no estándares definidos

+0

Acepto, vaya con JS nativo aquí - no es necesario el grueso de la biblioteca de la interfaz de usuario de jquery a menos que ya lo esté utilizando. Los modales son un poco exagerados de todos modos ... – ScottE

Cuestiones relacionadas