2010-01-20 6 views
34

У меня есть страница manageGroup.php, где пользователь также может добавлять член в группу. Я использовал colorbox, чтобы показать addGroupMember.php. Теперь мне нужно закрыть этот colorbox, как только я отправил форму.Как закрыть colorbox внутри iframe?

Javascript я использую в 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> 

Ссылку я использую, чтобы открыть ColorBox

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

код в addGroupMember.php, как это: -

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

Если он по-прежнему не работает, вы можете использовать что-то вроде ' 'и он должен выполнять эту работу. –

ответ

8

Во-первых: Уточните вопрос. Предоставленная вами информация - это то, что сокращено. Нет никакого шанса, что ты сможешь справиться с тем, что делаешь. Также включите еще несколько примеров кода.

Единственное, что я мог догадаться, это то, что вы пытаетесь вызвать метод в том, как он написан. Все, что вы добавляете к объекту $ .fn, привязано ко всем объектам jQuery.

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

..fredrik

+0

hi fredrik, я опубликовал подробное описание моей проблемы. но у меня не получилось использовать $ ('idOfDomElement'). colorbox.close(). –

+0

Не могли бы вы добавить код javascript, где вы открываете colorbox? – fredrik

+0

Код javascript добавлен –

1

Я просто попытался закрыть ColorBox внутри фрейма, но не можем заставить его работать. Я использовал $ ('# closebox'). Colorbox.close() и без везения.

+1

'parent. $ ('# Closebox'). Colorbox.close()' будет работать. – webnoob

2

Я думаю, проблема в том, что colorbox принадлежит родительскому объекту, а не DOM в iframe.

Предполагаю, что вам нужно вызвать parent. [Способ получить элемент или объект $ .fn] .colorbox.close(), или вам нужно добавить функцию в родительский документ и вызвать родителя. myCloseFunction()

+0

10x. Этот способ отлично работает для меня. – Dichev

16

Я сделал это для меня, немного сумасшедший, в любом случае, вы тоже можете попробовать.

Предположив страницы в IFRAME, как x.php, имеющая форму по имени А

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

Убедитесь, что страница загружается в плавающем фрейме. Все необходимые ссылки на colorbox js, jQuery js не нужны.

Затем родительский волосок будет работать:

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

На самом деле, я просто попробовал это на пустой странице, просто используя и это сработало! Нет заголовков, нет других тегов, кроме функции. Использование браузера Chrome, не знаю об IE или FF. – Derek

+1

parent. $ ('# Colorbox') выбирает правильно (проверено в firebug), но вы не получите больше. parent. $. fn.color.close(). (Интересно, действительно ли colorbox действительно 100% singleton во всех сценариях, в любом случае это работает ...) –

67

Это один работал отлично для меня и должен работать для вас

 

parent.jQuery.colorbox.close() 
 
+6

Чтобы опустить некоторые проблемы с помощью $, советую использовать parent.jQuery.colorbox.close(); –

+0

это сработало для меня. спасибо = D – azzy81

+0

Работал отлично! Благодарю. Я попытался использовать iframe jQuery ('# cboxClose'). Click(); и jQuery (window) .colorbox.close(); Но не сработало. Ваш код отличный. –

4

только это

parent.$.colorbox.close() 

, кажется, работает для меня!

Я использовал его так, даже без ссылки на любой JS в файле, загруженном в iframe.

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

Это единственное в пустом файле HTML, похоже, работает

+0

Да, очевидно, создатели Colorbox довольно умны ... – Derek

0

Мне не удалось закрыть Colorbox с предлагаемыми решениями. Я получаю родительский undefined ... Так что ..


я нашел взял другой подход:

Главная документ: (IFrame: ложные) это откроет ajax_page в DIV в том же документе

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

и в ajax_page

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

Надеюсь, это поможет

1

Существует простое решение, которое я использую.

я поставил этот <a id="btnDone" href="#">here</a> внутри кода или вы можете использовать представить идентификатор баттона и

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

этот путь и может перенаправить родительскую страницу. и colorbox автоматически закрывается. если вам не нужно перенаправление, просто поставьте «#» для window.parent.location

Смежные вопросы