2010-01-20 6 views
34

J'ai une page manageGroup.php, où l'utilisateur peut également ajouter un membre au groupe. J'ai utilisé colorbox pour montrer le addGroupMember.php. Maintenant, je dois fermer cette boîte de couleur une fois que j'ai fini de soumettre le formulaire.comment fermer la boîte de couleur dans iframe?

javascript 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 je 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 
} 
+1

Si cela ne fonctionne toujours pas, vous pouvez utiliser quelque chose comme ' 'et il devrait faire le travail. –

Répondre

8

Premièrement: Élaborez votre question. L'information que vous avez fournie est en désavantage numérique. Il n'y a aucune chance que vous puissiez saisir ce que vous faites. Incluez également quelques exemples de code.

La seule chose que je pourrais deviner est que vous essayez de déclencher la méthode dans sa façon d'écrire. 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

+0

salut fredrik, j'ai posté une description élaborée à mon problème. mais je n'ai pas eu votre point d'utiliser $ ('idOfDomElement'). colorbox.close(). –

+0

Pourriez-vous s'il vous plaît ajouter le code javascript où vous ouvrez la boîte de couleur? – fredrik

+0

Code javascript ajouté –

1

Je viens d'essayer de fermer colorbox à l'intérieur de l'iframe, mais ne pouvais pas le faire fonctionner. J'ai utilisé $ ('# closebox'). Colorbox.close() et sans aucune chance.

+1

'parent. $ ('# Closebox'). Colorbox.close()' fonctionnera. – webnoob

2

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

+0

10x. Cette façon fonctionne très bien pour moi. – Dichev

16

Je l'ai fait pour moi, un peu fou, de toute façon on peut aussi essayer.

Supposant votre page dans iFrame x.php forme ayant nommé 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> 
4

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

le parent appel proche fonctionnera:

parent.$('.yourElement').colorbox.close(); 
+0

En fait, je viens d'essayer ceci sur une page blanche en utilisant simplement et ça a marché! Aucun en-tête, aucun autre tags, rien sauf la fonction. En utilisant le navigateur Chrome, ne sais pas à propos de IE ou FF. – Derek

+1

parent. $ ('# Colorbox') se sélectionne correctement (vérifié dans firebug), mais vous n'irez pas plus loin. parent. $. fn.color.close() c'est. (Je me demande si colorbox est vraiment 100% singleton dans tous les scénarios, de toute façon ça marche ...) –

67

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

 

parent.jQuery.colorbox.close() 
 
+6

Pour omettre quelques problèmes avec $ je conseille d'utiliser parent.jQuery.colorbox.close(); –

+0

cela a fonctionné pour moi. merci = D – azzy81

+0

A travaillé parfaitement! Merci. J'ai essayé iframe jQuery ('# cboxClose'). Click(); et jQuery (fenêtre) .colorbox.close(); Mais pas travaillé. Votre code est génial. –

4

juste cette

parent.$.colorbox.close() 

semble fonctionner pour moi! Je l'ai utilisé sans même une référence à n'importe quel JS dans le fichier chargé dans l'iframe.

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

ce seul dans un fichier HTML vide semble fonctionner.

+0

Oui, apparemment les créateurs de Colorbox sont assez malins ... – Derek

0

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


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

Accueil Document: (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 le ajax_page

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

Espérons que cela aide

1

Il existe une solution simple que j'utilise.

i mettre ce <a id="btnDone" href="#">here</a> code à l'intérieur ou vous pouvez utiliser votre soumettre id de bouton et

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

cette façon u peut rediriger la page parent. et colorbox est automatiquement fermé. Si vous n'avez pas besoin de redirection, mettez "#" pour le window.parent.location

Questions connexes