2

我正在使用 jquery fancybox 2 来加载 iframe 表单。表单提交并将数据写入数据库,然后关闭fancybox。所以这一切都很好。但是我想从 iframe 表单中检索隐藏字段值。然后这个值会在父页面上隐藏对应的id。我尝试使用 beforeClose 选项获取隐藏字段值。但是我无法获得隐藏字段值。

隐藏字段有一个页面加载。花式框代码:

$(".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,然后在索引页面中将其清除。

如果 value = 0,它将重新加载页面。

我整天都在寻找答案,但对于一个简单的 2 行函数来说,它们似乎都非常复杂。

4

1 回答 1

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+

于 2012-07-15T21:02:45.330 回答