Javascript 将表单值从fancy box弹出窗口传递到主窗口

Javascript 将表单值从fancy box弹出窗口传递到主窗口,javascript,jquery,html,django,Javascript,Jquery,Html,Django,我目前正在使用python和Django开发一个web应用程序,我有一个使用fancybox jquery插件弹出的屏幕 当点击链接时,它会在我的服务器上打开一个url,基本上是一个表单 我试图实现的是,一旦弹出窗口关闭,就能够将表单输入的值传递到我的主页 我有一种奇怪的感觉,这是不可能的,我可能会更好地使用隐藏div(隐藏so on命令)而不是弹出窗口 我的测试页面: <div class='link'> <a class='fancy' href='create/'

我目前正在使用python和Django开发一个web应用程序,我有一个使用fancybox jquery插件弹出的屏幕

当点击链接时,它会在我的服务器上打开一个url,基本上是一个表单

我试图实现的是,一旦弹出窗口关闭,就能够将表单输入的值传递到我的主页

我有一种奇怪的感觉,这是不可能的,我可能会更好地使用隐藏div(隐藏so on命令)而不是弹出窗口

我的测试页面:

<div class='link'>
    <a class='fancy' href='create/' > click me </a>
</div
其主要思想是弹出窗口有一个表单,其中包含将添加到Django数据库的值,但主窗口上也有一个表,其中也显示了这些值。 我想让主窗口成为创建对象、保存对象并将其加载到表单中的窗口(这是通过使用ajax的API调用实现的)


任何帮助都会很好

下面是一个非常简单的发布/订阅,它创建一个存储对象,并使用
change
表单输入事件更新对象和页面元素

Html:

然后在fancybox代码中将对象发送到服务器,并使用服务器代码将值解析为表单:

$('.fancy').fancybox({
     type:'ajax',
     /* same as "options" for "$.ajax"*/
     ajax: { data : storedData},
     afterClose: function(){
        alert('done!');
     }       
});
演示:

<!-- table, match "data-bind" to form input name -->
<td data-bind="fname" class="subscriber">Foo</td>
<td data-bind="lname"  class="subscriber">Bar</td>
<!-- form -->
<input type="text" name="fname" class="data_source" />
/* declare empty object */
var storedData = {};

var $subscribers=$('.subscriber');
/* this event triggered when input changes*/
$(document).on('upDataData', function( event, key, value){
    storedData[key]=value;
    $subscribers.filter( '[data-bind="'+key+'"]').text( value );
});


/* change handler for form inputs*/
$(document).on('change', 'form input.data_source', inputChange);

function inputChange(){       
    $(document).trigger('upDataData',[ this.name, this.value]);
}
/* populate storedData from table elements when page loads*/
function createInitialData(){
    $subscribers.each(function(){
        storedData[ $(this).data('bind')]= $(this).text();
    });
}

 createInitialData()
$('.fancy').fancybox({
     type:'ajax',
     /* same as "options" for "$.ajax"*/
     ajax: { data : storedData},
     afterClose: function(){
        alert('done!');
     }       
});