通过输入jquery并添加它们

时间:2011-11-02 15:19:38

标签: jquery forms input each

我从某人那里获得了大量帮助,可以创建一个jquery代码段,根据税率自动计算表单输入。现在我想弄清楚如何循环每个输入,将它们加在一起,然后在特定的表td中输出它们。

我在添加sub_total,税收总额,税收总额和销售税总额时采取了一个裂缝,但它没有起作用。我也喜欢每一行的总数。关于如何去做,我一点也不知道。

继续我正在努力的jsfiddle。 http://jsfiddle.net/SU5jU/20/

完美 - > http://jsfiddle.net/SU5jU/39/

3 个答案:

答案 0 :(得分:3)

当您使用 $(this)时,您正在使用 this 来引用每个循环中的当前输入字段。

另外,你应该将所有输入值解析为float,在你当前的小提琴中你只是加入字符串。

http://jsfiddle.net/xvsC7/3/

答案 1 :(得分:1)

您在字符串上使用.toFixed方法(.val()的3倍添加)。将这些字符串转换为数字。此外,您忘记在.val()

的最后一个输入元素上使用var row_total = ..
var row_total = (parseInt($inputs.eq(1).val(), 10)
               + parseInt($inputs.eq(2).val(), 10)
               + parseInt($inputs.eq(3).val(), 10)).toFixed(2);

最后,将所有this.val()替换为this.value$(this).val() )。

小提琴:http://jsfiddle.net/SU5jU/26/

答案 2 :(得分:0)

检查一下。我已经部分重写了你的代码。也许它会对你有用:

代码:http://jsfiddle.net/SU5jU/28/

此处主要计算:

function CalculateData()
{
    var price = parseFloat($(this).val());

    var tax_one_rate = parseFloat($('[name="tax_one_rate"]').val()),
        tax_two_rate = parseFloat($('[name="tax_two_rate"]').val()),
        sales_tax_rate = parseFloat($('[name="sales_tax_rate"]').val());

    var $tr = $(this).parent().parent();
    $tr.find('td input[name="tax_one[]"]').val((tax_one_rate * 0.01 * price).toFixed(2));
    $tr.find('td input[name="tax_two[]"]').val((tax_two_rate * 0.01 * price).toFixed(2));
    $tr.find('td input[name="sales_tax[]"]').val((sales_tax_rate * 0.01 * price).toFixed(2));

    var rowTotal = 0;
    $tr.find('td:gt(1) input').each(function() {
        rowTotal += parseFloat($(this).val());
    });
    $tr.find('#row_total').text((price - rowTotal).toFixed(2));

    CalculateTotal();
}