【问题标题】:jQuery Popup Window Return Value to ParentjQuery弹出窗口返回值给父
【发布时间】:2011-01-22 02:52:44
【问题描述】:

如何使用 jQuery 完成以下操作:单击子窗口中的链接时打开一个弹出窗口,该窗口返回一个值给父窗口,关闭子窗口,然后让父窗口自动提交基于返回的值?

我意识到 jQuery Dialog 是一种流行的解决方案,但我需要一个弹出窗口,因为该窗口的内容需要是可导航的,并且我想避免在 jQuery Dialog 中使用 iframe。

弹出窗口将用于收集多个值,最终以分隔字符串的形式返回给父级,但此数据收集需要在提交父级窗口的表单之前进行。如果“实体选择器”有标准设计模式,那就是它。

这需要在 IE8、FF3.6、Safari 4 和 Chrome 5 中运行。

谢谢, 标记

【问题讨论】:

  • 为什么需要窗口的内容可导航?这没有任何意义——如果你想弹出一个页面的表单,为什么要让用户导航到其他地方?
  • 因为弹窗会用来收集多个值,最终会以分隔字符串的形式返回给父级,但是这个数据收集需要在提交父级之前进行窗口的形式。如果“实体选择器”有标准设计模式,那就是它。

标签: asp.net javascript jquery ajax popup


【解决方案1】:

这是我的解决方案:

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

【讨论】:

    【解决方案2】:

    在您新打开的浏览器窗口中,您可以尝试类似

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

    免责声明:我没有在任何浏览器中测试过。

    【讨论】:

    • 感谢您的回复,但“获得一些价值”对我来说有点含糊。例如,如果该值来自应用程序的会话状态怎么办?我将如何在您的示例中分配它?
    • 然后你会像这样渲染它:value = ''。但是如果值来自会话状态,为什么需要在窗口之间传递呢?我原以为您会从子窗口中的某个输入字段(文本框)中获取它。那么它就是 value = $('input.sometextbox').val();
    • 我编辑了我原来的问题来澄清。弹出窗口用于浏览系统以收集各种实体引用,然后将它们作为分隔字符串传递回父级。您可以将其视为类似于购物车,其中选定的项目存储在会话状态中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    相关资源
    最近更新 更多