在表单提交后关闭Colorbox iframe,然后重定向父页面

时间:2012-03-12 17:48:08

标签: jquery forms iframe colorbox

我一直试图用这几个星期来解决这个问题只有平庸的结果。由于我缺乏对Jquery的知识和最小的Javascript知识,我在网上拼凑了一些代码,我确信这都是错的。我正在使用Colorbox在iframe中显示带有添加到购物车按钮的产品(父和iframe都是来自我的服务器的页面)。我期望的结果是:

(为清晰起见而编辑)

  1. 让添加到购物车按钮将表单数据传递给提交时的父级。
  2. 传递表单后关闭Colorbox iframe。
  3. 父框架提交表单。
  4. 到目前为止,我在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关闭,表单只提交一半的时间(部分成功率)。我试图用firebug跟踪发布的数据,试图看看它是否每次发布,但因为它来自iframe,我似乎看不到任何东西。

    如果有人能帮助我用正确的代码解决这个问题,我将非常感激!

1 个答案:

答案 0 :(得分:0)

您可以尝试添加延迟:

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

将150更改为确保发送请求所需的任何值。

详细了解setTimeout here