2017-03-06 45 views
0

我有一个窗体可以通过不同的汽车进行过滤,它的工作非常完美。当点击返回按钮时,保留动态更改的选择值

当用户选择“Make”时,正确的兄弟“Models”被填充到下一个下拉列表中,等等等等。

问题是,一旦用户执行了搜索,如果他们点击浏览器的后退按钮,动态填充的选择值将恢复为默认值!

我没有使用ajax来动态填充选择字段,但只有JavaScript,我正在阅读一个JSON文件并更新模型/系列/等。

我已经看过这个帖子:Preserve dynamically changed HTML on back button

而且我不明白这是如何工作的,我也听说过localStorage的 - 这将是对我来说,旅行下来的最佳途径?谢谢。

+0

为什么他们是否首先回归? – Slime

+0

有些用户可能只是点击后退按钮 - 我想保存他们输入到许多网站所选择的字段中的数据。 – Notorious

+0

你可以通过本地存储,cookies或将搜索条件存储在服务器上的会话(或数据库)中。很多方法来实现。关键概念是保留_state_。网络本质上是_stateless_ - 默认情况下,它不记得以前的请求。在不同的场景中,这既是祝福也是诅咒。 – ADyson

回答

1

由于数据是动态加载的,当用户返回到上一页时,浏览器将无法重新填充先前选择的条目。

我建议你使用浏览器的localStorage存储最新的选择,并在用户返回时检索它们。为了实现它的一个新的变量设置为localStorage的对象,后来检索它像这样简单:

localStorage.make = "BMW";

alert(localStorage.make);

而且这里有一个更有用的例子:

select = document.getElementById("make"); 

if (localStorage.make) { 
    select.options[localStorage.make].selected = true; 
} 
+0

阿哈!我认为这终于开始有意义了,我对localStorage有所了解 - 这对我有用。我设法保存localstorage中的当前值,该值显示后退按钮何时被点击。现在我想我会尝试在所有选择值上运行foreach循环,并将其添加到localstorage。感谢您的回答! – Notorious

+0

没问题。你也可以避免必须通过直接得到选择的下拉列表值来循环所有的值,如下所示:'select.options [select.selectedIndex] .text' –

+0

如果这回答你的问题,一定要将我的答案标记为正确的答案:) –