【发布时间】:2010-12-16 00:49:37
【问题描述】:
我有一个包含文本字段数组的表单。用户(通过 javascript)可以向表单添加任意数量的文本字段。提交表单并按下后退按钮后,表单仅显示第一次呈现时原始表单上的字段(任何添加的文本字段都将丢失)。允许后退按钮以用户提交表单时的状态呈现表单的最佳方法是什么?欢迎任何想法,我尝试过的一些事情是:
- 将表单数据放入 cookie(此 不适合一对夫妇 原因,但对我来说是最大的杀手 是 cookie 被限制在 4K 大小)
- 将表单数据放入会话中
- 通过 AJAX 提交表单,然后管理历史记录
感谢您的帮助。我已经在我的网站http://fishtale.org/formtest/f1.php 上发布了一份测试表。这里还有一个简单的形式展示了我提到的行为:
<form action="f2.php" method="post">
<input type="text" name="text[]" id="text1"/>
<input type="submit" name="saveaction" value="submit form" />
</form>
<a href="f2.php" id="add_element">Add Form Element</a>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" ></script>
<script type="text/javascript" >
$('#add_element').click(function (event) {
event.preventDefault();
$('#text1').after('<input type="text" name="text[]" />');
});
</script>
这类似于我前段时间发布的一个问题Best Way For Back Button To Leave Form Data,但是,此表单的元素是由用户修改的。
【问题讨论】:
-
嗨,Brian,您反对使用临时 cookie 来存储值吗?您的用户通常会添加多少个字段?如果这听起来像是一个很好的解决方案,我会提供代码。
-
嘿,Doug,用户正在创建一个时间卡,因此他们可以添加相当多的元素,大约为 100。我不确定我是否反对临时 cookie,如果他们工作我都支持他们。我认为如果总 cookie 大小超过 4K 最大值,它们可能会导致其他 cookie 出现问题。谢谢。
标签: javascript html forms back-button