我最近问了一个类似的问题Close Colorbox iframe after form submit and then redirect parent page,但后来改变了方向,所以我认为最好创建一个新帖子。
我在iframe中有一个添加到购物车的表单(我的父和iframe都驻留在同一服务器/目录中)。在提交时,我想将表单传递给父页面上的脚本。该脚本将关闭iframe(colorbox)窗口并提交表单,但有一个例外;我有两个版本的网站,一个用于使用iframe显示产品的标准浏览器,另一个用于直接打开产品页面并且工作正常的移动网站。两者都使用存储信息的相同数据库,这意味着表单总是相同的,所以我需要一个条件,如果此页面位于iframe中,则需要(将表单传递给父级的脚本以提交)否则(按原样提交表格)。我在stackoverflow上找到了这个片段,我相信它应该适用于条件:
if (top === self) { not in a frame } else { in a frame }
我有三种不同的表单,每种表单都在一个单独的产品页面上:
最基本的:
<form name="add_cart" action="index.php?action=add" method="post"
enctype="multipart/form-data">
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="products_id" value="1" />
<input type="hidden" name="id[1]" value="1" id="att-1-1" />
<input type="hidden" name="id[2]" value="2" id="att-2-2" />
<input class="cssButton button" type="submit" value="Add Product"/>
</form>
然后选择多个复选框:
<form enctype="multipart/form-data" method="post" action="index.php?action=add"
name="cart_quantity">
<input type="hidden" value="1" name="quantity">
<input type="hidden" value="3" name="products_id">
<input id="option-8-1" type="checkbox" value="1" name="id[8][1]">
<input id="option-8-2" type="checkbox" value="2" name="id[8][2]">
<input id="option-8-3" type="checkbox" value="3" name="id[8][3]">
<input id="option-8-4" type="checkbox" value="4" name="id[8][4]">
<input class="cssButton button" type="submit" value="Add Selected Items" >
</form>
第三个选项包含一个选项的下拉选项:
<form enctype="multipart/form-data" method="post" action="index.php?action=add" name="cart_quantity">
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="products_id" value="3" />
<input type="hidden" name="id[6]" value="9" id="att-6-9" />
<select name="id-7" id="options">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
<option value="4">option 4</option>
</select>
我正在寻找任何帮助或指导,让它发挥作用。虽然我对javascript有更好的掌握,但Jquery会很好,任何事情都值得赞赏。
答案 0 :(得分:0)
你不需要条件,只需使用javascript不引人注意,即如果javascript启用,javascript停止(劫持)表单提交,将表单数据发送到父级并关闭iframe - 如果未启用javascript,则表单通常提交:例如用jQuery
<form id="my-form">
</form>
<script>
function formSubmissionHandler(){
// handle form submission
}
$(document).ready(function(){
$('#my-form').submit(function(){
formSubmissionHandler();
return false;
});
});
</script>