我从某人那里获得了大量帮助,可以创建一个jquery代码段,根据税率自动计算表单输入。现在我想弄清楚如何循环每个输入,将它们加在一起,然后在特定的表td中输出它们。
我在添加sub_total,税收总额,税收总额和销售税总额时采取了一个裂缝,但它没有起作用。我也喜欢每一行的总数。关于如何去做,我一点也不知道。
继续我正在努力的jsfiddle。 http://jsfiddle.net/SU5jU/20/完美 - > http://jsfiddle.net/SU5jU/39/
答案 0 :(得分:3)
当您使用 $(this)时,您正在使用 this 来引用每个循环中的当前输入字段。
另外,你应该将所有输入值解析为float,在你当前的小提琴中你只是加入字符串。
答案 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()
)。
答案 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();
}