表单操作期间的后退按钮问题

时间:2013-11-28 13:58:08

标签: javascript html forms coldfusion html-form

我的项目在3个不同的页面中有3个表格,例如form1.cfm,form2.cfm,form3.cfm。

form1.cfm包含第一个表单如下

<form name="firstform" method="post" action="form2.cfm">
 // form-content
</form>

<a href="javascript:void(0);"onclick="javascript:document.firstform.submit();">Next</a>

form2.cfm(第一个表单的操作页面)包含第二个表单,如下所示

<form name="secondform" method="post" action="form3.cfm">
 // form-content
</form>

<a href="javascript:void(0);"onclick="javascript:window.history.back();">Back</a>
<a href="javascript:void(0);"onclick="javascript:document.secondform.submit();">Next</a>

form3.cfm(第二种形式的行动页面)包含第三种形式如下

<form name="Thirdform" method="post" action="form4.cfm">
 // form-content
</form>

<a href="javascript:void(0);"onclick="javascript:window.history.back();">Back</a>
<a href="javascript:void(0);"onclick="javascript:document.Thirdform.submit();">Next</a>

所以当我使用form2.cfm中的Back按钮链接时,它会转到form1.cfm并且没有任何问题。当我在form3.cfm中执行相同操作时,它必须转到form2.cfm,但它要求表单重新提交,因为我知道它是form1.cfm的操作页面。

当我使用form3.cfm中的后退按钮链接并且不想看到表单重新提交页面时,我想去form2.cfm。

我不知道它是否可以修复。但欢迎提出建议或解决方案。

先谢谢

2 个答案:

答案 0 :(得分:1)

问题在于,通过使用POST,您告诉浏览器“嘿,此表单的效果可能不适合重复。”

您可以将方法更改为GET,但这可能也不合适,因为它说“此表单没有效果,只是为了显示内容。”

一个解决方案是提交表单,但是使用JavaScript收集数据,使用XHR请求发送数据,然后再使用JavaScript导航到下一个表单。

另一种解决方案是根本没有几种单独的形式。只需将它们全部放在一个主表格中。如果它变得很大,只需使用JavaScript隐藏不活动的部分并打开下一个/后退按钮并关闭这些部分。

答案 1 :(得分:1)

请勿使用“返回”,因为您要告知浏览器将原始页面1重新提交到第2页。

我可以建议您采用Fusebox(http://www.fusebox.org/)之类的简单框架,因为根据我的经验,您的CF应用程序将快速增长,这将使您的下游生活变得更加简单。

如果您的目标是使用“向导”类型界面来逐步浏览页面,您可以尝试将所有代码放入单个页面并使用jQuery(http://jqueryui.com/tabs/)<在'tab'中呈现它/ p>