0

在页面顶部,我有一个 JavaScript 日期选择器。所选日期存储在变量中newDate

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

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

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

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

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

4

2 回答 2

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 解决方案非常适合带有可解析(不是时间戳)日期字段的可见日期字段。

于 2012-10-05T07:36:19.237 回答
0

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

于 2012-10-05T07:47:39.970 回答