web-dev-qa-db-fra.com

comment fermer colorbox dans iframe?

j'ai une page manageGroup.php, où l'utilisateur peut également ajouter un membre au groupe. J'ai utilisé colorbox pour afficher le addGroupMember.php. Maintenant, je dois fermer cette colorbox une fois que j'ai terminé de soumettre le formulaire.

javascript que j'utilise dans manageGroup.php

<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>

Le lien que j'utilise pour ouvrir colorbox

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

le code dans addGroupMember.php est comme ceci: -

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

Celui-ci a parfaitement fonctionné pour moi et devrait fonctionner pour vous


parent.jQuery.colorbox.close()
68
Mr_Nizzle

je l'ai fait pour moi, un peu de façon folle, de toute façon vous pouvez aussi l'essayer.

Supposons que votre page dans iframe soit x.php ayant une forme nommée xyz

<?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

Premièrement: élaborez votre question. Les informations que vous avez fournies sont en quelque sorte sténographiques. Il n'y a aucune chance que l'on puisse saisir ce que vous faites. Incluez également un exemple de code supplémentaire.

La seule chose que je pourrais deviner, c'est que vous essayez de déclencher la méthode dans la façon dont elle est écrite. Tout ce que vous ajoutez à l'objet $ .fn est lié à tous les objets jQuery.

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

..fredrik

8
fredrik

Assurez-vous que la page est chargée dans l'iFrame. Toutes les références nécessaires aux colorbox js, jQuery js ne sont pas nécessaires.

Ensuite, l'appel de fermeture parent fonctionnera:

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

juste ça

parent.$.colorbox.close()

semble fonctionner pour moi!

Je l'ai utilisé comme ça sans même faire référence à un JS dans le fichier chargé dans l'iframe.

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

cela seul dans un fichier HTML vierge semble fonctionner.

4
steve

Je pense que le problème est que la colorbox appartient au parent, pas au DOM dans l'iframe.

Je suppose que vous devrez appeler parent. [Façon d'obtenir l'élément ou l'objet $ .fn] .colorbox.close () ou vous devrez ajouter une fonction au document parent et appeler parent.myCloseFunction ()

2
rets

Il existe en fait une solution simple que j'utilise.

j'ai mis ça <a id="btnDone" href="#">here</a> à l'intérieur du code ou vous pouvez utiliser l'identifiant de votre bouton d'envoi et

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

de cette façon, vous pouvez rediriger la page parent. et colorbox se ferme automatiquement. si vous n'avez pas besoin de redirection, mettez simplement "#" pour window.parent.location

1
Ahmet

J'ai juste essayé de fermer colorbox depuis l'iframe mais je n'ai pas pu le faire fonctionner. J'ai utilisé $ ('# closebox'). Colorbox.close () et sans aucune chance.

1
David

Je n'ai pas réussi à fermer la Colorbox avec les solutions suggérées. Je reçois un parent indéfini ... Alors ..


J'ai trouvé adopté une approche différente:

Document d'accueil: (iframe: false) cela ouvrira la ajax_page dans DIV dans le même document

$(document).ready(function(){
    $("#modalwindow").colorbox({
        width:"800px",
        height:"510px",
        iframe:false,
        href:"../ajax_page.php",
    });
}); 

et dans la ajax_page

$('#modalwindow').colorbox.close();

J'espère que cela t'aides

0
Dr Casper Black