2010-01-20 24 views
34

tengo una página manageGroup.php, donde el usuario también puede agregar miembro a un grupo. Usé colorbox para mostrar addGroupMember.php. Ahora necesito cerrar ese cuadro de colores una vez que haya terminado de enviar el formulario.cómo cerrar colorbox dentro de iframe?

Javascript estoy usando en 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> 

El enlace estoy usando para abrir colorbox

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

el código en addGroupMember.php es la siguiente: -

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 aún no funciona, puede usar algo como ' 'y debería hacer el trabajo. –

Respuesta

8

Primero: elabora tu pregunta. La información que proporcionaste es algo corto. No hay posibilidad de que uno pueda agarrar lo que está haciendo. También incluye un código de muestra más.

Lo único que podría adivinar es que intentas activar el método en la forma en que está escrito. Todo lo que agrega al objeto $ .fn está vinculado a todos los objetos jQuery.

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

..fredrik

+0

hola fredrik, publiqué una descripción detallada de mi problema. pero no entendí el punto de usar $ ('idOfDomElement'). colorbox.close(). –

+0

¿Podría agregar el código de JavaScript donde abre el colorbox? – fredrik

+0

código de JavaScript agregado –

1

Sólo traté de cerrar colorbox desde dentro del marco flotante, pero no podía `t conseguir que funcione. Usé $ ('# closebox'). Colorbox.close() y sin suerte.

+1

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

2

Creo que el problema es que el colorbox pertenece al padre, no al DOM en el iframe.

Supongo que deberás llamar al padre. [Forma de obtener el elemento o el objeto $ .fn] .colorbox.close() o necesitarás agregar una función al documento padre y llamar al padre. myCloseFunction()

+0

10x. De esta manera funciona muy bien para mí. – Dichev

16

lo hice por mí, un poco loco, de todos modos usted también puede intentarlo.

Suponiendo que su página en iframe como x.php tener forma xyz llamado

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

Asegúrese de que la página cargada dentro del marco flotante. Todas las referencias necesarias a colorbox js, jQuery js no son necesarias.

Entonces el padre pelos funcionará:

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

En realidad, intenté esto en una página en blanco simplemente usando y funcionó! Sin encabezados, ninguna otra etiqueta , nada excepto la función. Utilizando el navegador Chrome, no sé de IE o FF. – Derek

+1

padre. $ ('# Colorbox') selecciona correctamente (verificado en firebug), pero no podrá obtener más. parent. $. fn.color.close() es. (Me pregunto si colorbox es realmente 100% singleton en todos los escenarios, de todos modos funciona ...) –

67

Ésta funcionó perfectamente para mí y debería funcionar para usted

 

parent.jQuery.colorbox.close() 
 
+6

Para omitir algunos problemas con $ Aconsejo usar parent.jQuery.colorbox.close(); –

+0

esto funcionó para mí. gracias = D – azzy81

+0

¡Funcionó a la perfección! Gracias. He intentado con iframe jQuery ('# cboxClose'). Haga clic en(); y jQuery (ventana) .colorbox.close(); Pero no funcionó. Tu código es genial. –

4

sólo esta

parent.$.colorbox.close() 

parece funcionar ¡para mi!

Lo usé así sin siquiera una referencia a cualquier JS en el archivo cargado en el iframe.

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

esto solo en un archivo HTML en blanco parece funcionar.

+0

Sí, aparentemente los creadores de Colorbox son bastante inteligentes ... – Derek

0

No logré cerrar el Colorbox con las soluciones sugeridas. Me quedan los padres indefinidos ... Así que ...


encontré tomó un enfoque diferente:

documento

Inicio: (iframe: falsa) esto abrirá la ajax_page en DIV en el mismo documento

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

y en el ajax_page

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

Espero que esto ayude

1

En realidad, hay una solución simple que yo uso.

pongo este <a id="btnDone" href="#">here</a> código dentro o puede utilizar su ID de presentar botón y

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

esta manera u puede redirigir la página principal. y colorbox se cierra automáticamente. si no necesita redirección simplemente ponga "#" para la ventana.parent.location

Cuestiones relacionadas