【问题标题】:Passing javascript date to rails form将javascript日期传递给rails表单
【发布时间】:2012-10-05 07:32:03
【问题描述】:

在页面顶部我有一个 javascript 日期选择器。选择的日期存储在变量newDate

下面我在rails中有一个表格,如下所示:

<%= form_for(@checkin) do |f| %>
  ...
<% end %>

我希望在提交表单时将上面选择的日期作为参数传递。我想做这样的事情:

<%= f.hidden_field :checkedin_at, :value => newDate %>

但我很确定我不能像这样混合客户端和服务器端代码。还有其他方法可以解决这个问题吗?

【问题讨论】:

    标签: javascript ruby-on-rails-3 forms


    【解决方案1】:

    您可以像以前一样创建一个隐藏字段,并通过 javascript 将该隐藏字段的值设置为实际值。

    Erb 部分:

    <%= f.hidden_field :checkedin_at, :value => '', :id => 'date' %>
    

    Javascript 部分:

    document.getElementById('date').setAttribute('value', newDate);
    

    您可以在获得新日期值或提交时执行 javascript 设置部分,这由您决定。

    修改

    如果你想稍后修改一个已经保存的checkedin_at变量,那么你需要先阅读它。因此,您可能需要从模型中设置 Erb 中的实际值,并阅读:

    newDate = document.getElementById('date').getAttribute('value');
    

    旁注

    最好使用 javascript 以一种不显眼的方式进行操作。为无法使用普通浏览器的残障人士准备不支持 JavaScript 的浏览器。

    因此,一个简单的 HTML 解决方案是一个不错的选择,它带有可解析(不是时间戳)日期字段的可见日期字段。

    【讨论】:

    • 谢谢。我删除了 Erb 行中的 :value =&gt; '',现在它似乎可以在新签入以及编辑现有签入的情况下工作。
    【解决方案2】:

    提交时,您必须将数据字段数据复制到隐藏字段,然后提交表单。但是如果您想在提交表单时提交选定的日期,最好将日期作为表单的可见和可选字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多