如何更新多个可选输入的总和?

发布于 2024-11-08 12:32:27 字数 569 浏览 0 评论 0原文

我有一个有点大的表格,它采用货币值并在最后有总金额。我正在尝试使用 javascript (jQuery) 自动更新总数。一些输入字段是可选的。我正在考虑使用 .change() 方法。有没有比将更改方法与每个输入字段相关联更好的方法?

该脚本只需要从输入字段(如果有)中获取值,将它们相加并在某处显示总数。我的想法是标记每个相关的输入字段并选择它们。这可能吗?

[编辑] 示例代码:

<input name="input1" type"text" />
<input name="input2" type"text" />
<input name="input3" type"text" />
<input name="input4" type"text" />
<input name="input5" type"text" />
<input name="input6" type"text" />

<input name="total" type="text" />

所有输入最初都是空白的。我希望当我在输入中输入值时更新总数。

I have a somewhat large form that takes monetary values and has a total sum at the end. I am trying to automatically update the total using javascript (jQuery). Some of the input fields are optional. I am looking at using the .change() method. Is there a better way than to associate a change method with every single input field?

The script just needs to take the values from the input fields (if any), add them up and display the total somewhere. My idea was to tag each of the relevant input fields and select them. Is this possible?

[edit]
example code:

<input name="input1" type"text" />
<input name="input2" type"text" />
<input name="input3" type"text" />
<input name="input4" type"text" />
<input name="input5" type"text" />
<input name="input6" type"text" />

<input name="total" type="text" />

All the inputs are initially blank. I want the total to update as I enter values into the inputs.

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

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

发布评论

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

评论(2

甜是你 2024-11-15 12:32:27

如果您向要总计的每个输入元素添加一个类(称之为 "foo"),那么这将起作用:

var $form = $('#my-form-id'),
    $summands = $form.find('.foo'),
    $sumDisplay = $('some-other-selector');

$form.delegate('.foo', 'change', function ()
{
    var sum = 0;
    $summands.each(function ()
    {
        var value = Number($(this).val());
        if (!isNaN(value)) sum += value;
    });

    $sumDisplay.text(sum);
});

演示:http://jsfiddle.net/mattball/XcYTc/

If you add a class (call it "foo") to each input element that you want to total up, then this will work:

var $form = $('#my-form-id'),
    $summands = $form.find('.foo'),
    $sumDisplay = $('some-other-selector');

$form.delegate('.foo', 'change', function ()
{
    var sum = 0;
    $summands.each(function ()
    {
        var value = Number($(this).val());
        if (!isNaN(value)) sum += value;
    });

    $sumDisplay.text(sum);
});

Demo: http://jsfiddle.net/mattball/XcYTc/

落花随流水 2024-11-15 12:32:27

我认为这会起作用。将更改事件附加到类中。我认为最简单的方法是循环更改回调中的集合并总结所有值。如果您愿意,您可能可以只使用当前更改的项目的值,但出于某种原因,我觉得重新计算可能更安全。

$(".money").change(function(){
     var total = 0;
     $(".money").each(function(){
         total += $(this).val();
     }
     //now you can use total
});

I think that would work. Attach a change event to the class. I think the easiest thing to do would be to loop over the collection in the change callback and sum up all the values. You could probably just use the value of the currently changed item if you wanted, but for some reason I feel it might be safer to recalculate.

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