2009-07-05 44 views
6

当用户从父窗口中单击按钮时,我使用JavaScript打开一个新窗口(子)。我需要获取文本框的值,并在用户单击按钮时传递给父窗口,同时关闭子窗口,我需要插入更新后的值父窗口(没有刷新父窗口),所以我可以显示我的价值,父窗口的隐藏字段/标签,我该怎么做?jquery能做到这一点吗?弹出窗口为值

1-父窗口有按钮,点击子窗口打开 2-子窗口有文本框和按钮,当点击按钮时,子会对服务器做一个帖子更新数据库,然后将文本框的值传递给父窗口刷新父窗口,并关闭子窗口。

我该怎么做?它可以用简单的JavaScript来完成吗? 如果我使用jQuery来做,我会获得更多好处吗? 任何人都可以建议我该怎么做?

回答

14

普遍支持我会建议使用jQuery dialog widget,而不是实际的,新的窗口。这将使它更容易访问新值,因为它在同一个窗口的DOM中。只需从关闭窗口的按钮回调,即可从对话框中包含的DOM元素中提取值,并将其复制到窗体上的目标DOM元素。

$('#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

有些情况下,这不是最好的解决方案,但我同意走这条路线用于弹出式窗口的大多数经典用途。就我而言,我有一个带有多个摄像头源的主窗口,并且当用户单击弹出按钮时,我想要一个新窗口弹出。新窗口就是他们点击的网络摄像头馈送。对于所有6种供稿,除了源URL之外,新窗口将保持相同。拥有父窗口可以保存6个几乎相同的HTML文件。将它们作为新窗口允许用户在屏幕上的任何地方都可以使用凸轮输入,而无需打开父窗口。 – Anthony 2010-03-22 01:54:57

4

绝对:你正在寻找的JS本地* 首战财产(讨论here),无需jQuery的(虽然它可能被包裹你的出现)。

虽然Windows的开启和关闭是一种非常非2.0的做事方式,但您是不是更喜欢使用lightbox或类似的页内HTML对话框? jQuery对话肯定会是前进的方向。

* 好,如果没有标准定义

+0

我同意,与本地JS在这里 - 不需要大量的jQuery UI库,除非你已经使用它。无论如何,模式有点过分... – ScottE 2009-07-06 02:23:56