2010-01-05 7 views
17

나는 장바구니 아이템을 표시하기 위해 jQuery ColorBox을 사용하고 있습니다. 사용자가 iFrame에 수량을 입력하고 (컬러 박스로 열림) 제출 버튼을 클릭하면 iFrame이 닫히고 메인 윈도우 (부모)가 자동으로 새로 고침되기를 원합니다.Submit ColorBox iFrame 제출 후

  1. iframe이 자동으로 닫힙니다 :

    가 나는 두 가지 iframe이 데이터를 제출 한 후 원하는 의미한다.

  2. 부모 창이 자동으로 새로 고침 중입니다.

도와주세요.

답변

35

사용이를 여는 동안은 iframe :

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

이것은 iframe이 페이지 안에 iframe을 닫습니다 :

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

멋진 감사! – Amien

+1

@nik 어쨌든 onClosed 메서드에 매개 변수를 전달할 수 있습니까? – Anthony

+0

죄송합니다 @Anthony 님, 오랜만에 sc에 여기에와 있습니다. 당신은 항상 당신의 iframe에서 부모 창에 함수를 호출 할 수 있습니다 : window.parent.functionInParent ('myData'); 부모 바로 앞의 $. fn.colorbox.close(); – nik

3

의 "경고와 예"를 보면 : 부모 창에

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

어디서이 글을 써야합니까? n 프레임 또는 상위 HTML? 그리고 jquery colorbox에서 작동하지 않는다고 생각합니다. – diEcho

+0

colorbox의 닫기 버튼에이 버튼을 사용했는데 효과적이었습니다. iframe을 닫고 상위 페이지를 다시로드했습니다. –

1
<form target="_top"> 
1

이 같은 형태의 태그 보내기

<form target="_top"> 

을 다음 시간 이후에 제출

response.redirect("your form") 
2

개방 jQuery를 .colorbox.js 이 두 작품을 찾으십시오. 코드 S :

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


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

이 교체 -의 추가주의 "window.location.reload를();" 당신은 드루팔 7을 사용하는 경우

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


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

원시 소스를 수정하는 것은 나쁜 생각처럼 들린다 –

0

, 다음과 같은 대안을 사용해야 할 수도 있습니다 :

parent.jQuery.colorbox.close(); 

는 D7에서 $의 .fn는 jQuery 오브젝트로 대체 될 것으로 보인다.

단순히 설치 단순히이 반환 메뉴 콜백 :

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

나를 위해 잘 작동 :) 듯를

+0

왜 이것이 다운 투표 되었습니까?! – Nick

1

그냥 단순히 이런 닫기 버튼을 클릭, 시뮬레이션 :

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

이것이 나에게 작용하는 유일한 것입니다. 매우 영리한. 다른 솔루션은 분명히 유효하지 않습니다. 왜냐하면 당신이 열어 놓은 것과 동일한 자바 스크립트로만 색 상자를 닫을 수 있기 때문입니다. – Mauro

0

현재 페이지에 머물고 싶다면 :

  1. colorbox가 적용되는 상위 페이지에 다음 코드를 작성합니다.

    $(document).ready(function(){ 
    
    $(".tu_iframe_800x600").colorbox({width:"80%", height:"100%", iframe:false 
    
        }); 
    }); 
    
  2. 원하는 현재 페이지에서 다음 코드를 colorbox 닫습니다 parent.$.fn.colorbox.close();

참고 : colorbox가 호출되는에 HTML 클래스와 .tu_iframe_800x600를 교환하십시오 ...

+0

게시물을 수정하고 코드를 읽을 수 있도록 포맷하십시오. – kleopatra