【问题标题】:How to prevent HTML form reset如何防止 HTML 表单重置
【发布时间】:2010-08-07 06:46:17
【问题描述】:

我有一个表单,除了第一个字段外,所有内容都应该在加载时被禁用。
第一个字段是自动完成输入。当他们从中选择某些内容时,它会被禁用,然后将第二个字段设置为启用。第二个字段是一个下拉列表。

问题是,在用户使用表单并单击后退按钮后,它会进入与单击提交之前的状态相似的状态—— 1-自动完成被禁用(但由于某种原因没有价值) 2- 启用下拉菜单,并设置为他们提交的值

我尝试使用 javascript 强制恢复表单(使用 jquery 的 .ready()),但是 .ready() 在使用后退按钮返回后不会运行..

返回后刷新页面会恢复它。有什么想法可以解决这个问题吗?

【问题讨论】:

  • 我自己也遇到过这个问题,而且总能找到更好的设计。您是否考虑过重新设计?

标签: javascript jquery html forms


【解决方案1】:

问题在于浏览器在处理后退按钮的方式上不一致。例如,Firefox 会缓存 HTML 的状态(后 Javascript 处理)并在点击后退按钮后返回该状态,但其他一些则不会。

您最好做的是在提交之后,您应该重定向到一个 URL,该 URL 包含代表提交数据的 HTML,并且能够编辑这些提交的详细信息。这将减少您的用户想要点击后退按钮的欲望。

编辑:

您还应该将其添加到您的页面:

<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> 

这应该是为了防止浏览器缓存页面状态的变化。我假设您更喜欢这样,当用户点击后退按钮时,他们会从页面的开始状态开始。

【讨论】:

  • 这是个好主意。我将把这个作为答案,但出于好奇,这个问题有什么解决方案吗?我认为可能有一些服务器端技巧(例如,当他们返回时从 php 刷新页面)
  • “但其他人没有。” ——我建议你把它改成“但有些人没有”。 Opera 的功能类似于 Firefox 的功能(尽管我喜欢 Opera 做得更好的方式),并且可能还有其他浏览器也可以保持状态(想到 elinks)。
猜你喜欢
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多