2013-08-27 37 views
-1

我在表中有多行看起來像這樣。從輸入數組的元素中獲取總和

<tr> 
<td>Item 1</td> 
<td><input type=TEXT name="item_name[]" /></td> 
<td><input type=TEXT name="item_desc[]" /></td> 
<td><input type=TEXT name="item_type[]" /></td> 
<td><input type=TEXT name="item_price[]" /></td> 
<td><input type=TEXT name="item_setup[]" /></td> 
<td><input type=TEXT name="item_quant[]" /></td> 
</tr> 

等等

用戶可以動態地添加更多的行或刪除。

我想要做的JS部分,將顯示所有item_price * item_quant的總和,並顯示它在這個位上的keyup或模糊或改變。

<tr><td id=total></td></tr> 

編輯:到目前爲止嘗試以下。下面加一個「的onblur」來調用updateTotal(每場):

function updateTotal() { 
var total = 0; 

$("input[id^='item_quant[']").each(function() { 
    if (!isNaN(this.value) && this.value.length != 0) { 
     total += parseFloat(this.value); 
    } 
}); 

$("#total").val(total); 
} 

,但仍然沒有去

+2

所以有什麼問題? –

+3

請顯示您嘗試的內容。 – Barmar

回答

0

爲此,您可以通過每個元素的值轉換成整數,然後進行數學相加。

var add = 0; 
$("input").each(function() 
{ 
    add += Number($(this).val());//for integer 
    //add += parseFloat($(this).val());//for float or decimal 
}); 
$("#total").html("Sum of all textboxes is : " + add); 
1

嘗試

$('table').on('change', 'input[name="item_price[]"], input[name="item_quant[]"]', function() { 
    var total = 0; 
    $('table').find('tr').each(function() { 
     var $this = $(this); 
     var amount = (parseFloat($this.find('input[name="item_price[]"]').val(), 10) || 0) 
     * (parseFloat($this.find('input[name="item_quant[]"]').val(), 10) || 0); 
     total += amount; 
    }) 

    $('#total').text(total) 
}) 

演示:Fiddle

+0

這看起來很有希望。它可以自己工作,但是當我放入我的頁面時,它會中斷。想知道是否因爲我在那裏有其他表。我將如何去做這項工作只適用於其中的項目表? – user2720050

+0

@ user2720050在目標表中添加一個id並使用它...如果表id爲「my-table」,則將$('table')'改爲'$('#my-table')' –

+0

做到了!很多 – user2720050

0
$(".txt").each(function() { 

     //add only if the value is number 
     if (!isNaN(this.value) && this.value.length != 0) { 
      sum += parseFloat(this.value); 
     } 

    }); 

JSFIDDLE DEMO

+0

不完全是我想要做的。需要有數組字段,因爲它們是動態的,並且可以隨時添加。而且我還需要能夠通過價格乘以數量。 – user2720050