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

时间:2011-05-20 13:55:24

标签: jquery forms

我有一个很大的形式,它采用货币价值,并在最后有一笔总和。我试图使用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" />

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

2 个答案:

答案 0 :(得分:4)

如果你将一个类(称之为"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/

答案 1 :(得分:2)

我认为这样可行。将更改事件附加到课程。我认为最简单的方法是在更改回调中循环遍历集合并总结所有值。你可以根据需要使用当前更改的项目的值,但出于某种原因,我觉得重新计算可能更安全。

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