在用户浏览表单时存储cookie

Store cookies as a user progresses through a form

本文关键字:存储 cookie 表单 用户 浏览      更新时间:2023-09-26

我正在努力找出解决这一问题的最佳方法。我有一个表格,里面有一堆输入字段,例如名字、姓氏、地址等。我的问题是,当用户输入数据并浏览表格时,存储cookie的最佳方法是什么

我最初的想法是使用onchange事件并调用createcookie函数,但我担心的是,如果用户两次更改一个字段,即使它们以相同的名称传递,还会生成两个cookie吗?还是第一个同名的会被覆盖?

感谢

您真的需要为每个表单字段创建一个单独的cookie吗?您可以有一个方法来序列化整个表单,并将所有数据存储在cookie中。

使用jQuery,可以使用.serialize()方法:

http://api.jquery.com/serialize/

您还可以使用jquery cookie将数据存储在cookie中:

https://github.com/carhartl/jquery-cookie

根据使用情况,您可能不想要cookie。让我们知道您想做什么,我们将帮助您获得解决方案。在任何情况下:

您可以使用javascript创建和销毁cookie:http://www.w3schools.com/js/js_cookies.asp

要更新cookie,您需要删除cookie并重新创建它。

然而,我认为你可能不需要饼干您可以将所有数据存储在隐藏字段中,并在提交表单时发送或者使用ajax将它们发送到服务器,并让服务器将它们存储在会话中。

cookie以键值对的形式存储在用户的本地机器上,具有可选的过期期(cookie不再"有效"之前的时间)。

根据您的密钥命名选择,只要其值没有更改或已明确清除,它就会一直存在。

您可以使用onchange事件来完成此操作,只需使用表单字段ID作为键,并使用输入的文本作为值。

尽管使用jQuery将整个表单存储为cookie可能是一个更好的主意。

根据您的浏览器兼容性要求,您可能会考虑像本地存储这样的东西,而不是设置和重置cookie

https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage

或者,正如其他人所建议的,在一个cookie中序列化完整的表单。

通过一点实验,用document.cookie和name=value对创建一个cookie,然后用相同的名称和不同的值更新cookie并不会创建两个cookie,它实际上只是更新第一个。因此,我的onchange想法似乎运行良好。通过这些经验,我还发现本地document.cookies似乎无法在谷歌chrome上工作,但在mozilla firefox中运行得很好。