2013-05-03 71 views
1

我有一个表格里面有几个单元格,其中一个是数量,另一个是单价现在我有计算每行(模糊)的小计的问题。我不知道我是否正在走上正轨。每行实时计算

<div class="widget-body" style="padding: 10px 0 0;"> 
    <table class="table table-primary table-bordered" id="tableaux"> 
     <thead> 
      <tr> 
       <th>Repair Type</th> 
       <th>Detail Part Name</th> 
       <th>Quantity</th> 
       <th>Unit Price</th> 
       <th>Subtotal</th> 
       <th>Remove</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr> 
       <td> 
        <select style="width: auto;" id="repairtype_id1" name="repairtype_id1" class="repairtype"> 
         <option value="1">Single</option> 
         <option value="2">Parts</option> 
         <option value="3">Enhancement</option> 
        </select> 
       </td> 
       <td><input type="text" name="part_name1" id="part_name1" class="part_name" /></td> 
       <td><input type="text" name="qty1" id="qty1" style="width: 50px;" class="qty" /></td> 
       <td><input type="text" name="unit_price1" id="unit_price1" style="width: 100px;" class="price" /></td> 
       <td class="subtotal"><input type="text" class="subtot" id="subtot1" style="width: 100px;" /></td> 
       <td>&nbsp;&nbsp;&nbsp;&#x2716;</td> 
      </tr>  
     </tbody> 
    </table> 
</div> <?php echo br()?> 

<button type="submit" class="btn btn-icon btn-primary glyphicons circle_ok" id="saveRepair"><i></i>Record Repair</button> 
</form> 

    <button class="btn btn-icon btn-primary glyphicons magic" id="addAnother"><i></i>Add Another Item</button> 

function addTableRow(table) 
    { 
     var $tr = $(table).find("tbody tr:last").clone(); 
     $tr.find("input,select").attr("name", function(){ 
      var parts = this.id.match(/(\D+)(\d+)$/); 

      return parts[1] + ++parts[2]; 
     }).attr("id", function(){ 
      var parts = this.id.match(/(\D+)(\d+)$/); 
      return parts[1] + ++parts[2]; 
    }); 
    $(table).find("tbody tr:last").after($tr); 
    }; 

$('#addAnother').on('click', function() { 
     addTableRow($("table")); 

     return false; 
    }); 

$('table').live('input.subtot', 'blur', function(){ 
      var row = $(this).closest('tr'); 
      $(this).val(
        $('.qty', row).val()* 
        $('.price', row).val() 
      ); 
     }); 

下面是当前小提琴。

http://jsfiddle.net/XC3w4/

回答

1

这里就是你要找的内容:

$(document).on("change", ".price", function() { 
    var units = this.value; 
    var quantity = $(this).parent().prev().children("input").val(); 
    var subtotal = Number(units) * Number(quantity); 

    $(this).parent().next().children("input").val(subtotal); 
}); 

下面是更新小提琴:http://jsfiddle.net/XC3w4/1/

注意:您将不得不改变你的addNewRow方法,因为它克隆以前行,包括输入中的值!

+0

非常感谢您:) – 2013-05-03 18:50:55

+1

您可能还想为'.qty'添加事件处理程序,因此如果用户返回更改数量,则小计会更新而不必修改单价。 – Jesse 2013-05-03 18:53:05