2014-04-27 38 views
0

我已经做了一个手动输入一些字段,其他人是一个下拉列表和一些日历字段在JavaScript中的Web窗体。我最近添加的一个下拉菜单是从前一个下拉菜单的选定值中填充的。当它重新载入表单时,我会丢失所有先前输入的值,并且只保留一个下拉列表中的值。我是否必须捕获所有值,或者是否有办法在不重新加载表单的情况下填充第二个下拉列表?重新加载页面我失去了所有的值

回答

1

-.-一个字。 AJAX。用它。

无论何时您重新载入表格,您将失去所有未记录的数据时间段。

如果您必须重新加载页面,将所有数据保存在cookie中或其他东西。

+0

我在整个表单上拒绝了AJAX,但我认为这是我唯一的选择。我将不得不学习它。 – JohnB

+0

Theres在抵抗ajax方面没有意义。大多数用户讨厌刷新页面提交的表单。吸了它。 – Ramulis

0

我假设通过重新加载表单来表示提交它,然后返回页面的一个版本,并根据提交的第一个下拉列表填充第二个下拉列表。如果是这样的话,你可能会考虑隐藏第二个下拉菜单的所有可能值,然后在第一个下拉菜单中进行选择之后用JavaScript填充它。如果可能值的数量非常大或必须在服务器端进行计算(因为您最初无法知道所有的值),那么您可以使用AJAX提交表单并避免重新加载整个页面。

+0

不,我的意思是重新加载页面,现在你说了这个,使我意识到重新加载页面,重新初始化所有内容,所以不会解决我的问题。我会考虑将Ajax适配到我的表单。 – JohnB

0

检查您的页面的cache-control。该属性告诉浏览器依靠自己的缓存来重新加载页面。

这可以设置为元标记。例如:

<meta http-equiv="Cache-control" content="public"> 

但更好的方法(在我看来)是通过服务器端,使用header()function

请注意,有些表单为了避免垃圾邮件以及出于安全原因而倾向于将其设置为no-cache

1

有一种方法可以在不使用ajax的情况下保存数据,也不会向服务器发送任何内容。它被称为sessionStorage。

// store item 
localStorage.setItem("index", "value"); 

// retrieve item 
var data = localStorage.getItem("index"); 

所以,你只需要使用的sessionStorage的DATAS保存任何动作后(点击一个按钮,的keydown,鼠标离开...)和磨片重新加载页面,你就必须从你的数据再次填充它存储在会话中!