如何创建 OnChange“总计”事件来自未知数量文本字段的函数

发布于 2024-10-02 08:05:12 字数 445 浏览 3 评论 0原文

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

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

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

我想要做的是为每个单元格创建一个 OnChange 事件,以便当字段值更改时,“总计”列将使用该行中所有单元格的 text_field 输入中的总值进行更新。

我不知道如何将 Rails 对象传递给 Javascript(这样我可以循环遍历 ID),如果我在控制器中使用操作,我不知道如何获取 DOM 元素名称和值,而且我不知道也不知道如何使用 RJS 来做到这一点。任何人都可以提供有关如何执行此操作的任何帮助吗?谢谢你!

莎拉

I'm having trouble figuring out how to do a simple Javascript task on fields in a table created with Rails 3.

My table has characteristic rows that the user adds using a form below (which updates the database and reloads the table partial).

The number of columns in the table is based on the number of attributes submitted in a different form. No matter how many columns are in a row, there is also a Total column after them. Each cell in the table has a text_field input, with an ID that is based on the row object id and the column object id.

What I'm trying to do is create an OnChange event for each of those cells, so that when a field value changes, the Total column gets updated with the total value in the text_field inputs of all cells in that row.

I don't know how to pass the Rails objects to Javascript (so I can cycle through the IDs), I can't figure out how to get the DOM element names and values if I use an action in the controller, and I don't know how to use RJS to do this either. Can anyone offer any help on how to do this? Thank you!

Sarah

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗地喜欢 2024-10-09 08:05:12

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

例子:

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

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

If you use jQuery, you can set a class on the textboxes and listen to the change event on it.

example:

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

<script type="text/javascript">
    $(function(e) {
        $('.MyValue').change(function(e) {
            // update the total
        });
    });
</script>
将军与妓 2024-10-09 08:05:12

在 jQuery 中,可以很容易地迭代具有相同类的所有元素,因此文档的正确设计将在这里有所帮助。

也许是这样的:

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

您的 retotal 函数可以类似:

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

In jQuery it'd be easy to iterate over all elements with the same class, so proper design of your document will help here.

Maybe something like this:

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

Your retotal function can be similar:

 var total = 0;
 $('.thing_to_change').each(function() { total = total + $(this).val() });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文