【问题标题】:Any good way to save an unsubmitted form?有什么好方法可以保存未提交的表格?
【发布时间】:2013-08-28 14:20:49
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      data-persist="garlic"
      

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

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

      【讨论】:

      • 是的,看起来不错。工作原理与 localStorage 相同,但省去了一些繁重的工作!
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-02-16
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        • 1970-01-01
        • 2019-02-23
        • 1970-01-01
        • 2017-08-01
        相关资源
        最近更新 更多