2010-01-20 18 views
34

ho una pagina manageGroup.php, in cui l'utente può anche aggiungere un membro al gruppo. Ho usato colorbox per mostrare l'addGroupMember.php. Ora ho bisogno di chiudere quel colorbox una volta che ho fatto l'invio del modulo.come chiudere colorbox all'interno di iframe?

javascript sto utilizzando in 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> 

Il legame che sto usando per aprire colorbox

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

il codice addGroupMember.php è come questo: -

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

Se ancora non funziona puoi usare qualcosa come ' 'e dovrebbe fare il lavoro. –

risposta

8

Primo: elabora la domanda. Le informazioni che hai fornito sono alcune di quelle che sono le shorthanded. Non c'è nessuna possibilità che si possa afferrare quello che stai facendo. Includere anche un altro codice di esempio.

L'unica cosa che posso immaginare è che si sta tentando di attivare il metodo in come è scritto. Tutto ciò che aggiungi all'oggetto $ .fn è associato a tutti gli oggetti jQuery.

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

..fredrik

+0

Ciao Fredrik, ho pubblicato una descrizione elaborata al mio problema. ma non avevo il tuo punto di usare $ ('idOfDomElement'). colorbox.close(). –

+0

Potresti aggiungere il codice javascript per aprire la scatola dei colori? – fredrik

+0

codice javascript aggiunto –

1

ho solo cercato di chiudere colorbox da dentro l'iframe, ma couldn farlo funzionare. Ho usato $ ('# closebox'). Colorbox.close() e senza fortuna.

+1

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

2

Penso che il problema sia che il colorbox appartiene al genitore, non al DOM nell'iframe.

Suppongo che sia necessario chiamare il genitore. [Modo per ottenere l'elemento o $ .fn oggetto] .colorbox.close() o sarà necessario aggiungere una funzione al documento genitore e chiamare il genitore. myCloseFunction()

+0

10x. In questo modo funziona alla grande per me. – Dichev

16

ho fatto per me, un po 'pazzo, comunque puoi anche provarlo.

Supponendo vostra pagina in iframe come x.php avere form denominato 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

Assicurarsi che la pagina caricata all'interno del iFrame. Non sono necessari tutti i riferimenti necessari a colorbox js, jQuery js.

Poi il genitore chiamata vicina funzionerà:

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

In realtà, ho appena provato questo su una pagina vuota usando solo il genitore e ha funzionato! Nessuna intestazione, nessun altro tag , niente tranne la funzione. Utilizzando il browser Chrome, non so su IE o FF. – Derek

+1

parent. $ ('# Colorbox') seleziona correttamente (verificato in firebug), ma non andrà oltre. genitore. $. fn.color.close() lo è. (Mi chiedo se colorbox sia davvero al 100% singleton in tutti gli scenari, comunque funziona ...) –

67

Questo ha funzionato perfettamente per me e dovrebbe funzionare per voi

 

parent.jQuery.colorbox.close() 
 
+6

Per omettere alcuni problemi con $ ti consiglio di usare parent.jQuery.colorbox.close(); –

+0

questo ha funzionato per me. grazie = D – azzy81

+0

ha funzionato perfettamente! Grazie. Ho provato per iframe jQuery ('# cboxClose'). Click(); e jQuery (finestra) .colorbox.close(); Ma non ha funzionato. Il tuo codice è fantastico. –

4

proprio questo

parent.$.colorbox.close() 

sembra funzionare per me!

L'ho usato così senza nemmeno un riferimento a qualsiasi JS nel file caricato nell'iframe.

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

questo solo in un file HTML vuoto sembra funzionare.

+0

Sì, a quanto pare i creatori di Colorbox sono abbastanza intelligenti ... – Derek

0

Non sono riuscito a chiudere Colorbox con le soluzioni suggerite. Divento genitore indefinito ... Quindi ..


ho trovato preso un approccio diverso:

documento

casa: (iframe: false) questo aprirà l'ajax_page nel DIV nello stesso documento

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

e nel ajax_page

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

Spero che questo aiuti

1

Esiste una soluzione semplice che effettivamente utilizzo.

ho messo questo <a id="btnDone" href="#">here</a> codice all'interno o è possibile utilizzare il submit id del pulsante e

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

questo modo u può reindirizzare la pagina padre. e colorbox si chiude automaticamente. se non hai bisogno di reindirizzamento inserisci "#" per window.parent.location

Problemi correlati