Rails3/随着输入的变化而动态地重新计算字段
Rails 3/dynamically recalcuate a field as inputs change?
在我看来,我有两个这样的日期字段:
<%= f.text_field :start_date %>
<%= f.text_field :end_date %>
(我使用jquery-ui-datepicker来设置日期,但为了清晰起见,省略了该代码。日期存储在数据库中,名称为"2012-03-02"。)
我用助手方法计算两个日期之间的差异,并将其显示为#duration
:
<div id="duration">
<%= time_diff_in_natural_language(@project.start_date, @project.end_date) %>
</div>
这正如预期的那样工作——它计算存储在数据库中的两个日期之间的差异。但我真的很想动态重新计算持续时间——我猜这会通过日期字段上的javascript onchange();
事件来实现,该事件会触发对duration
字段中内容的重新计算,但我不知道如何实现。有人能为我指出一个实现这一目标的好方法吗?
(这个问题非常相似,我认为这个答案在这里也可以,但我不知道如何正确显示时差,因为这必须参考rails辅助方法。)
一种方法是调用ajax来获取持续时间。
因此,在您的控制器中,您将定义一个名为"duration"的操作,例如,它将查找两个参数:startdate和:enddate,并简单地调用您的助手方法timediv_in_natural_language。
def duration
time_diff_in_natural_language(params[:start_date], params[:end_date])
end
然后,您可以连接日期选择器的onSelect事件(或输入的onChange事件)来调用javascript函数,该函数只需对控制器中的"duration"操作进行ajax调用,并在成功时设置#duration。类似这样的东西:
function get_duration() {
$.ajax({
url: '/duration',
dataType: "json",
type: "POST",
data: { start_date: $("#project_start_date").val(), end_date: $("#project_end_date").val() },
success: function(result) { $("#duration").text(result); }
}
});
}
以上只是您如何处理此问题的一个示例。
相关文章:
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- 点击功能打开新窗口并计算点击次数
- 如何计算缩放后画布的新高度和宽度
- 根据计算计算小计
- 在不重置对象的情况下重新计算计算可观察量
- 如何计算 SharePoint 库/列表中的新项目数
- 两个具有相同值的对象,计算和更改一个对象的值.第二个也具有新的价值
- 修改函数以计算到新的一年,而不是返回值 12/33/2014
- JavaScript 中的 HTTP 摘要.新 URI 的 MD5 重新计算
- 新偏移量更新字体大小后不计算高度
- 访问内部属性名称以计算 ES6 中的新属性
- d3:计算两个节点之间的线的中点,画一条从它到一个新节点成90度角的线
- 如何计算幻灯片中的翻转次数(查看的新幻灯片)
- 如何计算新项目在转换容器中的位置
- 计算JavaScript数组元素的出现次数,并放入一个新的2d数组
- 如何从JavaScript对象中具有关系的数字计算新值
- 如何计算文本区域内的新行数
- 使用javascript(新字段)计算输入值
- 一个错误事件添加一个新类并计算它替换图像源的次数
- 如何通过计算文件夹中的文件数量来避免创建新文件