2010-01-05 17 views
17

Sto usando jQuery ColorBox per visualizzare un elemento del carrello. Quando un utente immette la quantità nell'iFrame (aperto con colorbox) e fa clic sul pulsante di invio, voglio che l'iFrame sia chiuso e che la finestra principale (padre) venga aggiornata automaticamente.Chiudi ColorBox iFrame dopo invia

voglio dire Voglio due cose dopo aver presentato i dati sul iFrame:

  1. iFrame si chiude automaticamente.
  2. La finestra padre si aggiorna automaticamente.

Please help me out.

risposta

35

uso questo sul finestra padre durante l'apertura:

$(document).ready(function(){ 
    $(".chpic").colorbox({width:"80%", height:"80%", iframe:true, 
     onClosed:function(){ location.reload(true); } }); 
}); 

e questo per chiudere l'iframe pagina interna iframe:

parent.$.fn.colorbox.close(); 
+1

Grazie fantastici! – Amien

+1

@nik ci sono comunque per passare un parametro al metodo onClosed? – Anthony

+0

Scusate @Anthony per la risposta in ritardo, venendo qui in sc dopo molto tempo. puoi sempre chiamare una funzione sulla finestra genitore dal tuo iframe come: window.parent.functionInParent ('myData'); poco prima del genitore. $. Fn.colorbox.close(); – nik

3

Dopo che il modulo viene inviato nel fotogramma 1, è possibile utilizzare il seguente JavaScript per ricaricare il frame padre: iframe

window.parent.location.reload(true); 
+0

dove devo scrivere questo? N che ho frame o su genitore html? e penso che questo non funzioni in jQuery Colorbox – diEcho

+0

L'ho usato su un pulsante di chiusura in un colorbox e ha funzionato benissimo: ha chiuso l'iframe e ha ricaricato la pagina madre. –

1
<form target="_top"> 
1

Dare tag form in questo modo:

<form target="_top"> 

poi dopo conferma:

response.redirect("your form") 
2

jquery aperto .colorbox.js trova questi due pezzi s di codice:

$close.click(function() { 
    publicMethod.close(); 
}); 


$overlay.click(function() { 
    if (settings.overlayClose) { 
    publicMethod.close(); 
    } 
}); 

sostituirli con questi - nota l'aggiunta di "window.location.reload();"

$close.click(function() { 
    publicMethod.close(); 
    window.location.reload();   
}); 


$overlay.click(function() { 
    if (settings.overlayClose) { 
    publicMethod.close(); 
    window.location.reload(); 
    } 
}); 
+2

modificare la fonte originale sembra una cattiva idea –

0

Se stai usando Drupal 7, potrebbe essere necessario utilizzare la seguente alternativa:

parent.jQuery.colorbox.close(); 

Nel D7, il $ .fn sembra essere sostituito da l'oggetto jQuery.

ho semplicemente impostare un callback menu che semplicemente restituito questo:

return <<<EOF 
<script type="text/javascript"> 
    <!--//--><![CDATA[//><!-- 
    parent.jQuery.colorbox.close(); 
    //--><!]]> 
</script> 
EOF; 

sembrava funzionare bene per me :)

+0

Perché è stato down-votato ?! – Nick

1

Basta semplicemente simulare un clic sul pulsante di chiusura, in questo modo:

$("#cboxClose").click(); 
+0

questo è l'unico che funziona per me. molto intelligente. le altre soluzioni apparentemente non sono valide in quanto è possibile solo chiudere una colorbox con lo stesso Javascript che l'ha aperta. – Mauro

0

Se si vuole rimanere sulla pagina corrente:

  1. scrivere il codice seguente nella pagina padre in cui è applicato Colorbox.

    $(document).ready(function(){ 
    
    $(".tu_iframe_800x600").colorbox({width:"80%", height:"100%", iframe:false 
    
        }); 
    }); 
    
  2. e il seguente codice nella tua pagina corrente in cui si desidera chiudere colorbox parent.$.fn.colorbox.close();

Nota: si prega di sostituire .tu_iframe_800x600 con la classe HTML su cui è chiamata la colorbox ...

+0

modifica il tuo post e formatta il codice per renderlo leggibile – kleopatra