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