【问题标题】:Back Button in Google Chrome not retaining radio box valuesGoogle Chrome 中的后退按钮不保留单选框值
【发布时间】:2018-02-23 23:28:14
【问题描述】:

提交包含所有单选框的表单时,后退按钮不会在谷歌浏览器中检索单选框选择。

请看下面的例子:

index.html

<form action="score.html" method="post">
<p>
Question 1: <br />
A<input name="question1" type="radio" value="A" /> <br />
B<input name="question1" type="radio" value="B" /> <br />
C<input name="question1" type="radio" value="C" /> <br />
</p>

<p>
Question 2: <br />
A<input name="question2" type="radio" value="A" /> <br />
B<input name="question2" type="radio" value="B" /> <br />
C<input name="question2" type="radio" value="C" /> <br />
</p>

<p>
Question 3: <br />
A<input name="question3" type="radio" value="A" /> <br />
B<input name="question3" type="radio" value="B" /> <br />
C<input name="question3" type="radio" value="C" /> <br />
</p>

<input name="Test" type="submit" value="Test" />
</form>

score.html

<a href="javascript:history.go(-1)>Go Back</a>

这是我构建的测试表单的精简版示例。当有人提交包含所有单选框的表单,然后进入结果页面时,我会显示哪些是正确的,哪些是错误的,并为他们提供更正错误的选项。返回的方法是通过浏览器返回按钮或者history.go(-1)。

仅在 Google Chrome(当前运行版本 35.0.1916.114 m)中,单选框重置为空白。在 IE 和 Firefox 中,它们运行良好。谷歌 chrome 是我们的主要浏览器,这一次运行没有问题。

我还发现,如果在表单中添加一个文本框,然后执行返回按钮,所有值都会按预期保留。

我还通过 HTTP / HTTPS 进行了测试,因为我研究过有人说他们对此有疑问。

我的解决方法是将答案发布回以前的表单,而不是使用 history.go(-1),但我们希望为那些倾向于点击它的用户再次打开后退按钮。

【问题讨论】:

  • History 仅保留 url 而不是用户交互。您可能需要保留单击的单选按钮,可能是在会话中。当页面呈现时,您需要查看保留的内容并设置选择了哪个单选按钮。
  • 我不同意。它可以在 IE 中运行,也可以在 Firefox 中运行。自开发和使用以来,它已经工作了 5 年以上……最近停止工作。它保留文本框字段,只是不保留单选框字段。向表单添加一个文本框使其工作。自 1993 年以来,我一直从事网站开发工作,但从未见过这样的结果。
  • 这取决于单击返回按钮的含义。一些浏览器将其视为重新提交之前的 HTTP 请求,这意味着您输入的任何信息都将丢失。一些浏览器将其视为返回上一个浏览器屏幕,这意味着您输入的任何信息都将被保留。但是,我看到后一种情况存在问题,因为这些浏览器需要保留大量存储在 JavaScript 代码中的信息,这些信息不仅在最后一页执行,而且在用户可以返回的所有页面中执行。

标签: html forms google-chrome


【解决方案1】:

我用复选框上的 autcomplete="off" 修复了它。

发现于:Browser back button issue in Chrome

【讨论】:

    猜你喜欢
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多