保存未提交表单的任何好方法?

时间:2013-08-28 14:20:49

标签: jquery ruby-on-rails ajax forms simple-form

我知道这是一项艰巨的任务,但是当用户导航到不同的页面而没有提交时,是否有任何保存表单输入的好方法,所以当他们回来时他们不必重新输入信息?

我正在使用Rails 4,Simple Form和jQuery,但我对任何不是丑陋黑客的解决方案持开放态度。

3 个答案:

答案 0 :(得分:6)

jQuery序列化功能可能是你的朋友。 您可以在出路时序列化并将其保存到DB或localStorage,然后在它们返回页面时执行相反的操作。

http://api.jquery.com/serialize/

或者,您可以循环遍历元素并将它们存储在数组/对象中,然后您也可以将其存储在localStorage中,并在重新输入时相应地重新填充表单的值。

答案 1 :(得分:3)

这些都是很棒的想法,但我刚刚为我找到了完美的解决方案:Garlic.js

对于将来遇到类似问题的任何人,您只需要包含该库并将以下内容添加到您的表单标记中即可:

data-persist="garlic"

图书馆几乎可以完全按照您的预期处理其他所有内容。如果你不喜欢它的一些预设,它似乎有很好的记录,几乎每个功能似乎都是可以禁用的。

一个问题是它只是一个HTML5解决方案,但这对我的目的来说很好。如果你需要更多交叉兼容的东西,Rob的解决方案看起来不错。

答案 2 :(得分:1)

如果您不想要任何外部依赖项,您只需创建一个实际提交表单的后退按钮(或其他任何页面)。然后根据if的值添加params[:submit]语句,并使用params哈希填充新页面上的一些隐藏字段。

当您单击回原始表单时,隐藏的字段将被提交并填充输入。