2012-03-12 2 views
2

나는 평범한 결과만으로 2 주 동안 이것을 알아 내려고 노력했습니다. Jquery에 대한 지식이 부족하고 Javascript에 대한 지식이 부족하기 때문에 인터넷에서 발견되는 코드 몇 개를 모아서 작성했기 때문에 모든 것이 잘못되었다고 생각합니다. 저는 Colorbox를 사용하여 iframe의 장바구니에 추가 버튼이있는 제품을 표시합니다 (부모 및 iframe은 모두 내 서버에서 오는 페이지 임). 내 원하는 결과는 다음과 같습니다양식 제출 후 Colorbox iframe을 닫은 다음 상위 페이지로 리디렉션

은 (명확성을 위해 편집)

  1. 장바구니에 담기 버튼을 제출에 부모에게 양식 데이터를 전달하는 추가 기능을 가지고.
  2. 양식 전달 후 Colorbox iframe을 닫습니다.
  3. 부모 프레임이 양식을 제출합니다. 내 iframe에 폼의 다음 코드를 사용하고 지금까지

:

<form name="cart_quantity" action="index.php?action=add_product" method="post" 
enctype="multipart/form-data" onSubmit="parent.$.fn.colorbox.close();"> 
<input type="hidden" name="qty" value="1" /> 
<input type="hidden" name="id" value="7" /> 
<input type="hidden" name="attri" value="17" id="attri-17" /> 
<input class="cssButton button" type="submit" value="ADD TO CART"/> 
</form> 

상위 페이지에 colorbox를 호출 내 스크립트입니다 :

<script> 
function lightbox(){  
    $.fn.colorbox({ 
    iframe:true, 
    onClosed:function(){ window.location = 'index.php?main_page=shopping_cart'; }, 
    href:"./index.php?main_page=product_info&id=7"}); 
} 
</script> 

그래서 문제까지 :

양식이 제출되면 Colorbox가 닫히고 양식은 시간의 절반 만 제출됩니다 (부분 성공률). 게시 된 데이터를 따라 잡기 위해 시도했는데 매번 게시되는지 확인하려고했지만 iframe에서 오는 것이므로 아무 것도 볼 수 없습니다.

아무도 내가 적절한 코드로 이것을 정렬하는 데 도움을 줄 수 있다면, 크게 감사하겠습니다!

+0

요청을 보내 주셔서 감사합니다. 어쩌면 그것은 나이지만 여전히 혼란 스럽다. 특히 "장바구니에 추가 버튼을 부모 페이지에 제출하도록하십시오"는 나를 위해 작동하지 않습니다. 더 자세히 해체하는 것을 고려해보십시오. iframe 상자를 사용하여 ** 사용자 의도 **를 캡처하고 그 의도를 상위 페이지로 전달하는 것을 닫을 수 있습니까? 그러면 실제로 제출을 수행합니까? iframe은 자식이므로 부모의 DOM 및 메모리에 대한 모든 액세스 권한이 있습니다. 또한 마크 업이 iframe인지 부모인지 명확하게 설명하십시오. –

+0

@ 케빈 남, 내 설명이 혼란 스러울 수 있음을 알 수있다. 나는 성취하려고 시도하는 목표를 말로 표현하기 위해 열심히 노력했다. 상위 또는 iframe을 보여주기 위해 코드를 편집했습니다. 사용자 의도 (iframe을 폼 데이터라고 생각하십니까?)를 iframe에서 부모에게 전달한 다음 부모가 데이터를 제출하도록하는 것에 대한 귀하의 의견은 저의 목표에 대한 훌륭한 설명입니다. 확실히 이해하기 쉽습니다. 이제는 어디에서 제대로 시작하려고합니까? – skylab

+0

@Kevin M, 이것에 대해 더 생각해 보면, 폼에서 onSubmit을 아마도 onClick으로 변경하는 것으로 시작할 것입니다. onClick은 부모에게 어떤 종류의 스크립트를 호출합니다. 그런 다음 Colorbox 창을 닫고 양식을 제출 하시겠습니까? – skylab

답변

0

당신은 시도하고 지연을 추가 할 수 있습니다

onSubmit="window.setTimeout(function(){parent.$.fn.colorbox.close();}, 150);" 

변경 (150)에 대한 요청이 전송되어 있는지 확인하는 것이 필요하다 어떤 값.

setTimeout에 대한 자세한 내용은 here을 참조하십시오.

관련 문제