我正在使用 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" />
我需要做的就是将页面加载值返回到 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+
关于php - 从 fancybox iframe 获取表单字段值并将其返回到 beforeClose 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494957/