所以我继承了这个遗留的rails代码库,并且我需要修复一个错误,即使在页面刷新之后,给定表单保留了值(尚未保存到数据库中)。
用例: 用户填写表格中的数据,但不按提交。 用户单击浏览器上的刷新按钮。 保留表单中的值,而不是刷新整个页面。
我可以开始寻找任何想法吗?在我简短而有限的Rails体验中,这不是默认情况下发生的事情,所以它必须在某处编码?
答案 0 :(得分:3)
有时浏览器会这样做。 (我不是在谈论自动填充下拉菜单,浏览器也会这样做......只是谈论部分填写的表单,从未提交过,然后刷新)。
通过检查HTML源窗口,确保字段中的值实际来自您的Rails应用程序。
由于之前的条目,浏览器提供的值不在VALUE属性中,但服务器提供的值将是。
避免这种情况的一些选择可能是:
可能有一个更简单的解决方案...... 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()时,它将重置为默认值。