2009-06-18 98 views
1

因此,我继承了这个传统的rails代码库,并且存在一个错误,我需要修复给定表单在页面刷新后保留值(尚未保存到数据库)的位置。更新后保留值的形式

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

任何想法,我可以开始寻找?在我短暂的,有限的Rails经验中,这不是默认情况下发生的事情,所以它必须在某个地方编码?

回答

0

应告诉用户按Ctrl + F5

- 编辑 如果你不能告诉用户press CTRL+F5(它总是在我的经验,除非作品的浏览器是马车,或除非有其他出错了),只是在form.reset()onload事件。这将清除窗体中的字段为默认值。如果您在字段中具有默认值(如<输入类型=“文本”值=“在此输入名称”/ >),那么当您旅行.reset()时,它将重置为默认值。

3

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

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

浏览器提供的由于以前输入的值不会在VALUE属性中,但服务器提供的值将会是。

避免,这可能是一些选项:

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

有可能是一个更简单的解决方案... Ctrl-F5有时会做这个伎俩,但我想我以前见过这种方法不行。

1

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