2011-11-02 69 views
0

我有很多人的帮助来创建一个jQuery代码片段来自动计算基于税率的表单输入。现在我试图找出如何循环每个输入,将它们添加在一起,然后将它们输出到特定的表td中。jquery通过输入并添加他们

我在加入sub_total,税收一总计,以及税收二总额和销售税合计方面采取了一些措施,但没有奏效。我还希望每行的总数在右侧。对于如何去做这件事我没有丝毫的想法。

继承人我工作的jsfiddle。 http://jsfiddle.net/SU5jU/20/

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

回答

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(); 
} 
+0

哇。这太棒了。我唯一不知道的是live()函数没有被使用。行会被动态添加到jquery中,当我们没有使用live()时,新行不会受到影响。另外,如何将计算绑定到tax_one [],tax_two []和sales_tax []以及price [],而不是税率? – David

+0

填写可以将直接事件绑定到'live'。 – Samich

+0

关于第二个问题,您需要以某种方式标记手动更改的字段(例如,通过属性),然后从自动计算中排除这些字段,并且只能从它们中删除gen值 – Samich

3

您使用来指代当前输入字段,你的每一个循环里面,什么时候应该使用$(本)

此外,你应该解析所有输入值浮动,在你目前的小提琴你只是加入字符串。

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

+0

感谢您的答复。我修好了,但它似乎仍然不工作http://jsfiddle.net/SU5jU/23/ – David

+1

我纠正了小提琴,它现在工作完美。 –

+0

这太棒了,谢谢!你知道如何搜索“#row_total”的下一个实例并更新该td吗? – David

1

您使用一个字符串(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()所有出现。

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

+0

真棒,谢谢你!你会不会碰巧知道如何只更新特定行的#row_total? – David

+0

ID应该是唯一的。例如,使用'class =“row_total”',并使用'$(this).parent()。next('。row_total')'。 –

相关问题