web-dev-qa-db-ja.com

iframe内でカラーボックスを閉じる方法は?

ページmanageGroup.phpがあり、ユーザーはグループにメンバーを追加することもできます。カラーボックスを使用してaddGroupMember.phpを表示しました。フォームの送信が完了したら、そのカラーボックスを閉じる必要があります。

manageGroup.phpで使用しているJavaScript

<script language="javascript" type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/dropdown.js"></script>
<script type="text/javascript" src="js/jquery.colorbox.js"></script>
<script type="text/javascript">
 $(document).ready(function(){
 $(".iframe").colorbox({width:"80%", height:"80%", iframe:true});
 });
</script>

カラーボックスを開くために使用しているリンク

<a class="iframe" href="addGMember.php?id=<?php echo base64_encode($fetch->g_id)?>">Add Member</a>

addGroupMember.phpのコードは次のとおりです。

if($_POST['add']=="Go")
{
  $gid = $_POST['id'];
  $ii=0;
  $insert = "INSERT INTO ".DBGMEMBER." (gm_g_id,gm_m_id) VALUES ";
  foreach($_POST['gMember'] as $gMember)
  {
    if($ii==0)
    {
        $insert .= " ('".$gid."' , '".$gMember."')";
    }
    else
    {
        $insert .= " ,('".$gid."' , '".$gMember."')";   
    }
    $ii++;
  }
  $db->execute($insert);// after this i want to close the colorbox
  echo "<script>parent.$.fn.colorbox.close(); </script>";// code i used, but not working
}
34
Ashish Rajan

これは私にとって完璧に機能し、あなたのために働くはずです


parent.jQuery.colorbox.close()
68
Mr_Nizzle

私はそれを私のために少しクレイジーな方法でやりました、とにかくあなたもそれを試してみることができます。

Xyzという名前のフォームを持つx.phpとしてiframeのページを想定

<?php
  if($_post['submit']=='Submit')
  {
    //some php code here
    if(success)
     echo "<script>parent.$.fn.colorbox.close(); </script>";
    else
    {
      //some error handling here;
    }
  }
?>
<form name='xyz' action='x.php'>
 //some html code here
 <input type='Submit' name='submit' />
</form>
16
Ashish Rajan

最初:質問を詳しく説明します。あなたが提供した情報は、いくつかの略記です。あなたがしていることを把握できる可能性はありません。また、サンプルコードをいくつか追加します。

私が推測できる唯一のことは、あなたがそれが書かれている方法でメソッドをトリガーしようとしているということです。 $ .fnオブジェクトに追加するものはすべて、すべてのjQueryオブジェクトにバインドされます。

// doesn't work
$.fn.colorbox.close()
// proper way
$('idOfDomElement').colorbox.close()

..fredrik

8
fredrik

ページがiFrame内にロードされていることを確認してください。カラーボックスjs、jQuery jsへの必要な参照はすべて必要ありません。

その後、親のクローズ呼び出しが機能します:

parent.$('.yourElement').colorbox.close();
4
JustinJason

これだけ

parent.$.colorbox.close()

私のために働くようです!

Iframeにロードされたファイル内のJSへの参照すらなく、このように使用しました。

  <a href="javascript:parent.$.colorbox.close()">close</a>

これだけで空のHTMLファイルが機能するようです。

4
steve

問題は、カラーボックスがiframeのDOMではなく親に属していることだと思います。

私の推測では、parent。[要素または$ .fnオブジェクトを取得する方法] .colorbox.close()を呼び出す必要があるか、親ドキュメントに関数を追加してparent.myCloseFunction()を呼び出す必要があります。

2
rets

私が実際に使用する簡単なソリューションがあります。

私はこれを入れます<a id="btnDone" href="#">here</a>内部コードまたは送信ボタンのIDを使用して、

 $(document).ready(function () {
        $("#btnDone").click(function () {
            window.parent.location = "../siparisler/listele.aspx"
        });
 }

このようにして、親ページをリダイレクトできます。カラーボックスは自動的に閉じます。リダイレクトが必要ない場合は、window.parent.locationに「#」を入力します

1
Ahmet

私はiframe内からcolorboxを閉じようとしましたが、機能させることができませんでした。私は$( '#closebox')。colorbox.close()を使用しましたが、運はありません。

1
David