如何从未知数量的文本字段创建OnChange“totaling”函数

时间:2010-11-12 19:21:05

标签: javascript ruby-on-rails rjs

我无法弄清楚如何在使用Rails 3创建的表中的字段上执行简单的Javascript任务。

我的表具有用户使用下面的表单添加的特征行(更新数据库并重新加载表的部分)。

表中的列数基于以不同形式提交的属性数。无论连续多少列,它们之后还有一个Total列。表中的每个单元格都有一个text_field输入,其ID基于行对象id和列对象id。

我要做的是为每个单元格创建一个OnChange事件,这样当字段值更改时,Total列将使用该行中所有单元格的text_field输入中的总值进行更新。 / p>

我不知道如何将Rails对象传递给Javascript(所以我可以遍历ID),如果我在控制器中使用动作,我无法弄清楚如何获取DOM元素名称和值,而我也不知道如何使用RJS来做到这一点。谁能提供任何帮助,如何做到这一点?谢谢!

萨拉

2 个答案:

答案 0 :(得分:1)

如果您使用jQuery,您可以在文本框上设置一个类并在其上收听更改事件。

示例:

<input type="text" id="WhateverXXX" class="MyValue" />

<script type="text/javascript">
    $(function(e) {
        $('.MyValue').change(function(e) {
            // update the total
        });
    });
</script>

答案 1 :(得分:1)

在jQuery中,使用相同的类迭代所有元素很容易,因此正确设计文档将有助于此。

也许是这样的:

 $('.thing_to_change').live('change', function() { retotal(); });

您的重审功能可以类似:

 var total = 0;
 $('.thing_to_change').each(function() { total = total + $(this).val() });