使用jquery计算N个输入的值

时间:2012-05-30 19:56:18

标签: jquery jquery-plugins

我有一个表单,用户可以创建无限数量的行(使用jquery-添加新行)来添加多个产品信息。当他们创建新行时,代码如下所示。

现在我要做的是每当用户输入产品数量和产品价格的价值时,我想立即计算总数(product quantity* product price)并将结果放在total[]输入中然后调整表单底部的total amount输入。

当我使用jquery输入固定数量时,我知道如何执行此操作,但由于在这种情况下输入量未得到修复,因此我对如何实现此操作有所了解。

你能告诉我吗?

提前致谢:)

 <tr>

   <td><input type="text" name="name[]" id="name_1" value=""></td>
   <td><input type="text" name="quantity[]" id="quantity_1" value=""></td>
   <td><input type="text" name="rate[]" id="rate_1" value=""></td>
   <td><input type="text" name="total[]" id="total_1" value=""></td>                        

 </tr>  

 <tr>

  <td><input type="text" name="name[]" id="name_2" value=""></td>
  <td><input type="text" name="quantity[]" id="quantity_2" value=""></td>
  <td><input type="text" name="rate[]" id="rate_2" value=""></td>
  <td><input type="text" name="total[]" id="total_2" value=""></td>                     

 </tr>  

   <!-- I have N number of rows like above. and at the bottom I have input for total -->
 <tr>

   <td>&nbsp;</td>
   <td>&nbsp;</td>
   <td>&nbsp;</td>
   <td><input type="text" name="totalamount" id="totalamount" value=""></td>                        

  </tr>                         

1 个答案:

答案 0 :(得分:2)

以下是一种可能的解决方案:

$(":text[name='quantity[]'], :text[name='rate[]']").on("change", function() {
    var totalamount = 0;
    $("tr").each(function() {
        var quantity = +$(this).find(":text[name='quantity[]']").val() || 0;
        var rate = +$(this).find(":text[name='rate[]']").val() || 0;
        var subtotal = quantity * rate;
        $(this).find(":text[name='total[]']").val(subtotal);
        totalamount += subtotal;
    });
    $("#totalamount").val(totalamount);
});​

DEMO: http://jsfiddle.net/ak49E/