从fancybox iframe获取表单字段值并将其返回到beforeClose函数

时间:2012-07-15 19:32:33

标签: php jquery iframe fancybox

我正在使用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行函数来说,它们看起来都非常复杂。

1 个答案:

答案 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 +