我知道这是一项艰巨的任务,但是当用户导航到不同的页面而不提交时,有什么好的方法可以保存表单输入,这样当他们回来时就不必重新输入信息?
我正在使用 Rails 4、Simple Form 和 jQuery,但我愿意接受任何不是丑陋黑客的解决方案。
我知道这是一项艰巨的任务,但是当用户导航到不同的页面而不提交时,有什么好的方法可以保存表单输入,这样当他们回来时就不必重新输入信息?
我正在使用 Rails 4、Simple Form 和 jQuery,但我愿意接受任何不是丑陋黑客的解决方案。
jQuery 序列化函数可能是你的朋友。您可以在输出时序列化并将其保存到 DB 或 localStorage,然后在它们返回页面时执行相反的操作。
http://api.jquery.com/serialize/
或者,您可以遍历元素并将它们存储在一个数组/对象中,然后您也可以将其存储在 localStorage 中,并在重新输入时相应地重新填充表单的值。
这些都是很棒的想法,但我刚刚为我找到了完美的解决方案:Garlic.js。
对于将来遇到类似问题的任何人,您使用garlicjs 所要做的就是包含库并将以下内容添加到您的表单标签中:
data-persist="garlic"
图书馆几乎完全按照您的预期处理了其他所有事情。如果你不喜欢它的一些预设,它似乎有很好的文档记录,几乎每个功能似乎都是可禁用的。
一个问题是它是一个仅 HTML5 的解决方案,但这对我的目的来说很好。如果您需要更交叉兼容的东西,Rob 的解决方案看起来不错。
如果您不想要任何外部依赖项,您可以只创建一个实际提交表单的后退按钮(或其他页面)。然后只需if
根据 的值输入一条语句,params[:submit]
并使用params
哈希填充新页面上的一些隐藏字段。
当您单击返回原始表单时,隐藏字段将被提交并填充输入。