点击浏览器后退按钮时如何保持无线电选择状态?

时间:2012-09-25 11:24:16

标签: php

我正在处理一个包含许多收音机的调查多步骤表格。

他们有一些默认状态

用户操作它们以选择他的偏好。

现在客户希望在点击浏览器后退按钮或侧面导航器链接(指向调查的前几个阶段的一组链接)时,让用户先前选择的无线电状态。

以下是导航器的外观:

<ul>
<li><a href="index.php?site=form1">Step1</a></li>
<li><a href="index.php?site=form2">Step2</a></li>
<li><a href="index.php?site=form3">Step3</a></li>
</ul>

整个调查过程中只有一个$ _SESSION收集数据。

我知道我可以直接从$ _SESSION加载信息,但是当请求来自导航器链接/后退按钮时,我需要替换默认状态。

3 个答案:

答案 0 :(得分:0)

有两种主要的方法,基本上你是说收音机的选择状态需要保存在你表单的不同页面之间。

因此,当您返回之前未提交的页面时,选项应该仍然相同。

有两种关键方法,服务器端使用PHP或客户端使用Javascript

<强> PHP

您可以在网站上设置任何链接以提交表单,然后您可以保存收音机选择,然后在创建表单时可以检查以前选择的值

此信息可以保存在$_SESSION中,但每次更改页面时都需要提交表单(您可以更改链接以执行此操作)

<强>的Javascript

你可以写一些记住选择内容的javascript,并将它们作为cookie存储在用户浏览器中,这可以在每次点击按钮时更新。当页面加载时,javascript会检查cookie(或本地存储)并加载之前的选项。

当他们完成并提交表单后,您就会清除javascript

基本示例

$('form input[type=radio]:checked')

一旦我掌握了更多信息,我将进一步充实这个答案

答案 1 :(得分:0)

发布表单后,您可以在会话中保存值。再次访问上一页(或甚至首先加载它)时,读取会话的值并检查指定的无线电。如果您第一次访问页面,会话中将没有数据,因此不会检查任何人。

您还可以使用JavaScript和Cookie轻松存储选定的值。

答案 2 :(得分:0)

一种非常简化的可能解决方案:

<?php
   session_start(); // this needs to be at the top of all pages using $_SESSION (before anything else) else $_SESSION will always be empty
   if($_POST['vehicle']){
      $_SESSION['checkbox1'] = $_POST['vehicle'];
   }
print_r($_SESSION); // remove this line after testing. It will show you the contents of the $_SESSION, which is handy for seeing when variables are set within it
?>

<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
   <input type="checkbox" name="vehicle" value="Bike"<?php if($_SESSION['checkbox1'] == "Bike"){ echo " checked"}?>>I have a bike<br />
   <input type="checkbox" name="vehicle" value="Car"<?php if($_SESSION['checkbox1'] == "Car"){ echo " checked"}?>>I have a car <br />#
   <input type="submit" value="Go" />
</form>
</body>
</html>

您可以在隐藏的输入区域中添加第一页生成的唯一ID,当发布时,该ID可以构成会话变量名称的一部分。从那里,信息将在该变量名称下的$ _SESSION中编入索引,从而更容易将数据拉回或创建新的表单会话。

希望我没有失去你。