刷新后形成保留值

时间:2009-06-18 19:50:51

标签: ruby-on-rails ruby forms

所以我继承了这个遗留的rails代码库,并且我需要修复一个错误,即使在页面刷新之后,给定表单保留了值(尚未保存到数据库中)。

用例: 用户填写表格中的数据,但不按提交。 用户单击浏览器上的刷新按钮。 保留表单中的值,而不是刷新整个页面。

我可以开始寻找任何想法吗?在我简短而有限的Rails体验中,这不是默认情况下发生的事情,所以它必须在某处编码?

3 个答案:

答案 0 :(得分:3)

有时浏览器会这样做。 (我不是在谈论自动填充下拉菜单,浏览器也会这样做......只是谈论部分填写的表单,从未提交过,然后刷新)。

通过检查HTML源窗口,确保字段中的值实际来自您的Rails应用程序。

由于之前的条目,浏览器提供的值不在VALUE属性中,但服务器提供的值将是。

避免这种情况的一些选择可能是:

  • 使用POST将用户发送到表单。因此,任何刷新都会导致“你想重新提交”等等。我不会认为浏览器会在这种情况下预先填写任何字段(与用户发布然后点击时相同)后退按钮)。
  • 使用onload()事件清除表单字段值。

可能有一个更简单的解决方案...... Ctrl-F5有时可以解决这个问题,但我想我甚至已经看到过以前无法解决的问题。

答案 1 :(得分:1)

我也遇到了这个问题,甚至<body onload="myform.reset()">都没有用。这尤其是一个问题,因为无论好坏,我都使用隐藏输入作为计数器(例如,跟踪动态数量的文件上传字段)。这些显然需要在重新加载时重置,以防止出现不适用的警告消息。我通过放弃重置按钮以支持链接来“修复”它以用于我的内部目的。而不是<input type="reset"/>我正在使用<a href=".">Reset</a>(文件名是index.php)。远非优雅,但它适用于我的目的。

答案 2 :(得分:0)

告诉用户按CTRL + F5

- 编辑 如果你不能告诉用户press CTRL+F5(根据我的经验总是有效,除非浏览器有问题,或者除非其他出错了),只需跳转表格即可。 onload 事件中的reset()。这会将表单中的字段清除为默认值。如果您在字段中有默认值,(例如&lt; input type =“text”value =“在此输入名称”/&gt;),那么当您跳转.reset()时,它将重置为默认值。