1

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

我正在使用 Rails 4、Simple Form 和 jQuery,但我愿意接受任何不是丑陋黑客的解决方案。

4

3 回答 3

6

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

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

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

于 2013-08-28T14:22:33.517 回答
3

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

对于将来遇到类似问题的任何人,您使用garlicjs 所要做的就是包含库并将以下内容添加到您的表单标签中:

data-persist="garlic"

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

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

于 2013-08-28T15:33:33.457 回答
1

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

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

于 2013-08-28T14:26:51.820 回答