2

jquery fancybox 2 を使用して iframe フォームをロードしています。フォームはデータを送信してデータベースに書き込み、ファンシーボックスを閉じます。それで、その部分はすべて良いです。ただし、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);
        }
      }
    });

ファンシーボックスは次のようにトリガーされます:

<a href="editcategory.php&pageload=<?php echo $sub_id; ?>" class='various' data-fancybox-type='iframe'>LINK</a>

iframe popsup がある場合:

<input type="hidden" value="<?php echo $_GET['pageload']; ?>" id="pageload" name="pageload" />

あとは、pageload の値を afterClose 関数に返すだけです。afterLoad 関数を使用して値を取得しようとしましたが、 beforeClose 関数を使用しましたが、null 以外の答えが得られないようです。これにより、そのIDが「スライドアップ」され、インデックスページでクリアされます。

値が 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);
 }
}

:これはfancyboxv2.0.6+用です

于 2012-07-15T21:02:45.330 に答える