jquery通过输入并添加他们
我有很多人的帮助来创建一个jQuery代码片段来自动计算基于税率的表单输入。现在我试图找出如何循环每个输入,将它们添加在一起,然后将它们输出到特定的表td中。jquery通过输入并添加他们
我在加入sub_total,税收一总计,以及税收二总额和销售税合计方面采取了一些措施,但没有奏效。我还希望每行的总数在右侧。对于如何去做这件事我没有丝毫的想法。
继承人我工作的jsfiddle。 http://jsfiddle.net/SU5jU/20/
检查了这一点。我已经部分重写你的代码。也许这将是对您有用:
代码: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();
}
您使用这来指代当前输入字段,你的每一个循环里面,什么时候应该使用$(本)。
此外,你应该解析所有输入值浮动,在你目前的小提琴你只是加入字符串。
您使用一个字符串(3次加.val()
)的.toFixed
方法。将这些字符串转换为数字。此外,你忘了你的最后输入元素上使用.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.value
(或$(this).val()
)取代的this.val()
所有出现。
真棒,谢谢你!你会不会碰巧知道如何只更新特定行的#row_total? – David
ID应该是唯一的。例如,使用'class =“row_total”',并使用'$(this).parent()。next('。row_total')'。 –
哇。这太棒了。我唯一不知道的是live()函数没有被使用。行会被动态添加到jquery中,当我们没有使用live()时,新行不会受到影响。另外,如何将计算绑定到tax_one [],tax_two []和sales_tax []以及price [],而不是税率? – David
填写可以将直接事件绑定到'live'。 – Samich
关于第二个问题,您需要以某种方式标记手动更改的字段(例如,通过属性),然后从自动计算中排除这些字段,并且只能从它们中删除gen值 – Samich