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


get a form field value from fancybox iframe and return it to beforeClose function

我正在使用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+