检查了这一点。我已经部分重写你的代码。也许这将是对您有用:
代码: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();
}
哇。这太棒了。我唯一不知道的是live()函数没有被使用。行会被动态添加到jquery中,当我们没有使用live()时,新行不会受到影响。另外,如何将计算绑定到tax_one [],tax_two []和sales_tax []以及price [],而不是税率? – David
填写可以将直接事件绑定到'live'。 – Samich
关于第二个问题,您需要以某种方式标记手动更改的字段(例如,通过属性),然后从自动计算中排除这些字段,并且只能从它们中删除gen值 – Samich