关于jquery:Javascript:当用户在浏览器中单击“返回”按钮时,使div保持display =’block’状态

Javascript: Making divs hold state of display='block' when user clicks BACK button in browser

我的表单上有一些div,默认情况下是隐藏的(style =" display:none;")。 当用户单击某个单选按钮时,将执行onclick事件并显示div。 然后,在表单提交后将用户带到评论页面,该页面向他显示任何错误。 如果有的话,他单击浏览器上的"后退"按钮以返回到表单并更正它们。 启用了缓存,以便所有他的表单内容都在那里。 问题是,由于表单正在寻找onclick事件,因此所有先前暴露的div再次被隐藏。 有什么方法可以确保用户在查看页面上单击返回表单时保持暴露状态? 我以为document.ready函数可以做到这一点,但没有任何乐趣。


正如Yair所述,您可以使用Cookie。使用纯JS无法做到这一点。但是,您也可以使用PHP。

在将用户转移到第二页之前,让JS扫描有问题的divs,然后找出哪些可见。 (我假设它们都有各自的ID)。将这些ID存储在以逗号分隔的字符串或数组中,并以_POST或_GET的形式将其发送到新页面。

让PHP将其作为隐藏值存储在某处。您可以使用隐藏的输入,也可以在某物上使用data-x,只要它存在即可。

在该页面上放置JS,以监视其后单击,将其停止,然后将用户重定向到上一页,然后将字符串或数组发送回该页面。让该页面上的PHP将其打印为JS值,并让pageload上的JS显示具有匹配ID的所有div。


Cookies或localStorage(如果您仅针对现代浏览器):

本地存储


Is there any way to make sure they stay exposed when the user clicks
back to the form from the review page? I thought a document.ready
function would do it, but no joy.

您可以使用cookie来管理Web浏览器中的状态。 Cookies将帮助您保存所需的用户状态。


浏览器重新加载后,所有javascript代码都会重新初始化。您无法识别用户是否通过浏览器回来。

初始显示发生时,您可以使用Cookie或本地存储来保存值,并稍后在document.ready上显示/隐藏div。