表单重新访问页面时使用iFrame作为目标重新提交

时间:2015-10-14 10:40:05

标签: javascript html forms iframe

我已经使用Google表单在我的网站上创建了一个表单,通过几个教程,我阻止该页面导航到Google表单感谢页面,而是使用我自己的感谢页面。

这样做的方法是使用隐藏的iframe作为表单上的目标,然后iFrame检查表单是否已成功提交,然后再将窗口切换到我的感谢页面。

<iframe name="hidden_iframe" id="hidden_iframe"
   style="display:none;" onload="if(submitted == true)
  {window.location='https://www.normadorothy.com/sample-thanks';}">
</iframe>

这样可以正常工作并在显示感谢页面之前提交表单,但是如果用户然后单击后退按钮,表单将再次提交。

我已经尝试console.log(submitted)返回false,因此不确定为什么要提交两次。

为了清楚起见,表单代码为:

<form id="sample-form" class="validate" action="google-url" method="post" target="hidden_iframe" onsubmit="return validate();">

validate函数检查所有字段,将submitted设置为true,然后提交表单。

任何帮助都会很棒,我一直用这个把头撞在墙上!

1 个答案:

答案 0 :(得分:0)

我猜这种情况正在发生,因为后退按钮会尝试将您带回iFrame的最后一个已知状态(即POST形式的表单),而不是&#34; raw&#34;陈述你期待。您可以尝试在父页面上使用JS编写iFrame来解决此问题:

var iframe = document.createElement('iframe');
iframe.onload = function() { if(submitted == true)  {window.location='https://www.normadorothy.com/sample-thanks';}};
iframe.style.display = 'none';
document.body.appendChild(iframe);