2010-01-05 16 views
17

Ich benutze jQuery ColorBox, um einen Einkaufswagen Artikel anzuzeigen. Wenn ein Benutzer die Menge in den iFrame eingibt (mit colorbox geöffnet) und auf die Schaltfläche "Senden" klickt, möchte ich, dass der iFrame geschlossen wird und das Hauptfenster (übergeordnet) automatisch aktualisiert wird.Schließen ColorBox iFrame nach dem Senden

Ich meine, ich möchte zwei Dinge, nachdem die Daten auf iFrame einreichen:

  1. iFrame automatisch geschlossen.
  2. Übergeordnetes Fenster wird automatisch aktualisiert.

Bitte helfen Sie mir.

Antwort

35

Verwendung dieses auf dem Fenster Eltern beim Öffnen iframe:

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

und dies die iframe innerhalb iframe Seite zu schließen:

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

Brilliant danke! – Amien

+1

@nik gibt es sowieso um einen Parameter an die onClosed Methode zu übergeben? – Anthony

+0

Sorry @Anthony für die späte Antwort, kommt hier in sc nach langer Zeit. Sie können immer eine Funktion im übergeordneten Fenster von Ihrem iframe aus aufrufen: window.parent.functionInParent ('myData'); kurz vor dem übergeordneten. $. Fn.colorbox.close(); – nik

3

Nachdem das Formular in Frame 1 vorgelegt wird, können Sie das folgende JavaScript verwenden, um die übergeordnete Frame neu geladen werden:

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

wo muss ich das schreiben? N dass ich Rahmen oder auf Eltern html? und ich denke, das funktioniert nicht in jquery colorbox – diEcho

+0

Ich habe dies auf eine Schaltfläche zum Schließen in einem colorbox verwendet und es funktionierte großartig: schloss den iframe und lud die übergeordnete Seite neu. –

1
<form target="_top"> 
1

Geben Sie Formular-Tag wie folgt aus:

<form target="_top"> 

dann nach einreichen:

response.redirect("your form") 
2

offen jquery .colorbox.js finden Sie diese zwei Stück s Code:

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


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

mit diesen ersetzen - beachten Sie die Zugabe von "window.location.reload();"

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


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

Ändern der Roh-Quelle klingt wie eine schlechte Idee –

0

Wenn Sie mit Drupal 7, können Sie die folgende Alternative verwenden müssen:

parent.jQuery.colorbox.close(); 

In D7, der $ .FN scheint durch das jQuery-Objekt ersetzt werden.

ich ein Menü Rückruf einfach Setup, die einfach diese zurückgegeben:

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

Schien gut für mich zu arbeiten :)

+0

Warum wurde das abgelehnt ?! – Nick

1

Einfach nur ein Klick auf den Schließen-Button, wie dies simulieren:

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

das ist der einzige, der für mich arbeitet. sehr schlau. Die anderen Lösungen sind anscheinend nicht gültig, da Sie eine Farbbox nur mit dem gleichen Javascript schließen können, das sie geöffnet hat. – Mauro

0

Wenn Sie auf der aktuellen Seite bleiben wollen:

  1. Schreiben Sie den folgenden Code auf die übergeordnete Seite, wo colorbox angewendet wird.

    $(document).ready(function(){ 
    
    $(".tu_iframe_800x600").colorbox({width:"80%", height:"100%", iframe:false 
    
        }); 
    }); 
    
  2. und den folgenden Code auf der aktuellen Seite, wo Sie colorbox parent.$.fn.colorbox.close();

Hinweis schließen möchten: bitte ersetzen .tu_iframe_800x600 mit Ihrem HTML-Klasse, auf dem die colorbox genannt wird ...

+0

Bitte bearbeiten Sie Ihren Beitrag und formatieren Sie den Code, um ihn lesbar zu machen – kleopatra

Verwandte Themen