我正在使用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行函数来说,它们似乎都很复杂。
首先,您需要在脚本顶部声明变量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+