我正在使用jquery fancybox 2来加载iframe表单。 表单提交数据并将数据写入数据库,然后关闭fancybox。 所以这一切都很好。 但是,我想从iframe表单中检索隐藏的字段值。 然后,该值将隐藏父页面上的相应ID。 我尝试使用beforeClose选项获取隐藏的字段值。 但是我无法获得隐藏的字段值。
隐藏字段有一个页面加载。 fancybox代码:
$(".various").fancybox({
maxWidth : 800,
maxHeight : 700,
fitToView : false,
width : '70%',
height : '90%',
autoSize : false,
closeClick : false,
openEffect : 'fade',
beforeClose : function(){
var pageload = $('#pageload').val();
console.log('var = ' + pageload);
},
afterClose : function(){
if(pageload != 0){
$('#'+pageload).slideUp('slow');
} else {
window.location.reload(true);
}
}
});
并且fancybox由以下方式触发:
<a href="editcategory.php&pageload=<?php echo $sub_id; ?>" class='various' data-fancybox-type='iframe'>LINK</a>
当iframe弹出时,有:
<input type="hidden" value="<?php echo $_GET['pageload']; ?>" id="pageload" name="pageload" />
我需要做的就是将pageload值返回到afterClose函数。 我已经尝试使用afterLoad函数来获取值,即beforeClose函数,但它们似乎都没有给我一个除null之外的答案。 然后,这将“滑动”该ID,然后在索引页面中将其清除。
如果值= 0,则会重新加载页面。
我整天都在寻找答案,但对于一个简单的2行函数来说,它们看起来都非常复杂。
答案 0 :(得分:1)
首先,您需要在脚本顶部声明变量pageload
。现在它只在beforeClose
回调函数中有效,所以
<script>
var pageload;
.
.
然后你的fancybox回调
// we won't use beforeClose but beforeShow
beforeShow: function(){
// get the value of pageload INSIDE the iframe
pageload = $('.fancybox-iframe').contents().find('#pageload').val();
},
afterClose : function(){
if(pageload != 0){
$('#'+pageload).slideUp('slow');
} else {
window.location.reload(true);
}
}
注意:这适用于fancybox v2.0.6 +