2010-03-08 100 views
0

我正在使用购买流程。该过程由4个步骤组成。前两个步骤是我们收集所有客户数据的地方。第三步通过AJAX将数据发送到我们的服务器,然后显示付款表单。付款后,客户感谢第4步。PHP会话与jQuery show()/ hide()

我的问题是关于第1步和第2步。现在所有这些步骤都在同一页上。我有一个表格分成两个<div>'s。在第一步中,隐藏第二个div(css:{display:none;}),当客户转到第2步时,第一个div隐藏了jQuery hide(),第二个div与jQuery show()一起显示。

我的问题是,我希望客户有可能回到步骤1,使用网络浏览器中的“后退”按钮,这显然现在不起作用。有没有任何纯粹的JavaScript解决方案?无论如何,我们会要求我们的用户激活js。还是开始使用会话更好?该网站基于PHP。

我们将看看是否有任何人能够理解我的想法和问题..

回答

1

更改URL片段(#之后的位)创建浏览器历史记录条目。很多web应用程序都会利用这个来做你正在描述的内容。看看jQuery BBQ plugin(演示here)。

1

Ajax和后退按钮通常不发挥得很好。你应该提供一个链接,将采取“后退”。但是如果您再次提交第一个表单,这会有什么问题吗?你最终会得到额外的或孤儿的条目?

+0

+1此外,如果您将表单拆分成不同的页面,您可以一边进行数据验证一边验证数据。可能会让生活更轻松。 – Jeremy 2010-03-08 22:56:13

0

这个最简单的作弊方式(它远非可靠的)是有一个javascript函数专门监听一个“window.unload”事件,但只有当用户的表单的第二部分可见时不会触及提交按钮或您已设置提交或转到其他页面的任何其他内容(如链接)。

但这是相当侵扰性的,因为用户可能真的只想离开页面;很难设置正确的时间,因为只有当用户从第二个表单中单击时,才会返回false,而不是将页面留给其他任何内容(包括您想要的内容);如果他们想要真正关闭窗户(你应该尽量不要侵犯),它可能会搞砸。基本上,据我所知,没有用户点击后退按钮的跨浏览器JavaScript事件。但其他人可能不会。

但是,如果你能制定出时机,不介意承担风险,这将是一个巧妙的把戏。