【问题标题】:Form retaining values after refresh刷新后表单保留值
【发布时间】:2010-11-04 03:06:25
【问题描述】:
所以我继承了这个遗留的 Rails 代码库,我需要修复一个错误,即即使在页面刷新之后,给定表单仍保留值(尚未保存到数据库)。
用例:
用户在表单中填写数据但没有按提交。
用户单击浏览器上的刷新按钮。
保留表单中的值,而不是刷新整个页面。
我可以从哪里开始寻找任何想法?在我简短的、有限的 Rails 经验中,这不是默认情况下发生的那种事情,所以它必须在某个地方编码?
【问题讨论】:
标签:
ruby-on-rails
ruby
forms
【解决方案2】:
有时浏览器会这样做。 (我不是在谈论自动填充下拉菜单,浏览器也会这样做……只是在谈论部分填写、从未提交、然后刷新的表单)。
通过检查 HTML 源窗口,确保字段中的值实际上来自您的 Rails 应用程序。
浏览器因先前输入而提供的值不会出现在 VALUE 属性中,但服务器提供的值会出现。
避免这种情况的一些选项可能是:
- 使用 POST 将用户发送到表单。因此,任何刷新都会导致“您要重新提交”等。我不认为浏览器会在这种情况下预先填写任何字段(与用户发布然后点击后退按钮)。
- 使用 onload() 事件清除表单字段值。
可能有一个更简单的解决方案... Ctrl-F5 有时可以解决问题,但我想我以前也见过这种方法不起作用。
【解决方案3】:
我也遇到了这个问题,甚至<body onload="myform.reset()"> 也没有用。这尤其是一个问题,因为无论好坏,我都使用隐藏输入作为计数器(例如,跟踪文件上传字段的动态数量)。这些显然需要在重新加载时重置,以防止出现不适用的警告消息。我出于内部目的“修复”了它,放弃了重置按钮以支持链接。而不是<input type="reset"/>,我使用的是<a href=".">Reset</a>(文件名是index.php)。远非优雅,但它适用于我的目的。