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