我制作了一个网页表单,其中包含一些手动输入的字段,其他字段为下拉列表,以及一些javascript中的日历字段。我最新添加的下拉列表是从上一个下拉列表的选定值填充的。当它重新加载表单时,我丢失了以前输入的所有值,只保留了一个下拉列表中的值。我是否必须捕获所有值,或者是否可以在不重新加载表单的情况下填充第二个下拉列表?
答案 0 :(得分:1)
-.-一个字。 AJAX。用它。
每次重新加载表单时,都会丢失所有未记录的数据。
如果必须重新加载页面,请将所有数据保存在cookie或其他内容中。
答案 1 :(得分:1)
有一种方法可以在没有ajax的情况下保存数据,也可以不向服务器发送任何内容。它叫做sessionStorage。
// store item
localStorage.setItem("index", "value");
// retrieve item
var data = localStorage.getItem("index");
所以你必须在任何动作之后用sessionStorage保存数据(点击按钮,keydown,mouseleave ......),当你重新加载页面时,你只需要从你在会话中存储的数据再次填充它!
答案 2 :(得分:0)
我假设通过重新加载表单,您的意思是提交表单,然后返回页面版本,并根据提交的第一个下拉列表填充第二个下拉列表。如果是这种情况,您可以考虑隐藏第二个下拉列表的所有可能值,然后在第一个下拉列表中进行选择后使用JavaScript填充它。如果可能值的数量非常大或必须在服务器端计算(例如,您最初无法知道所有值),那么您可以使用AJAX提交表单并避免重新加载整个页面。
答案 3 :(得分:0)
检查您的信息页cache-control
。该属性告诉浏览器依赖自己的缓存来重新加载页面。
可以将其设置为元标记。例如:
<meta http-equiv="Cache-control" content="public">
但更好的方法(在我看来)是通过服务器端,使用header()
function。
请注意,有些人希望在表单方面将其设置为no-cache
,以避免垃圾邮件以及出于安全原因。