2013-06-25 32 views
0

我有這樣的代碼:的Javascript動態地計算多行使用一個功能

Qty: <input type="text" name="qty" id="qty" class="txt" value="" /> 

Price: <input type="text" name="price" id="price" class="txt" value="500" /> 

Total: <input type="text" name="total" id="total" class="txt" value="" /> 

的Javascript:

$('#qty').keyup(function() { 
    var quantity = $("#qty").val(); 
    var priceItem = $("#price").val(); 
    var total = quantity * priceItem ; 
    $("#total").val(total); 
}); 

這只是一行。如何使功能可以用於所有行?

+1

你在其他行的「id」是什麼?像'qty_2'什麼的? – leonhart

+0

@leonhart是我的id:qty1,qty2,... – yovierayz

+0

id應該始終是唯一的..看起來像你有多個元素相同的id – bipen

回答

2

爲什麼不使用類?它會給你更好的控制你的元素和heck,它使編碼更容易:)

通過選擇器操縱ID降低性能,並使代碼混亂維護。如果您決定在和1之間添加-,那麼該怎麼辦?qty1?假設你有qty場30次,你必須改變這30次。

這裏是你的標記會是什麼樣子:

Qty: 
<input type="text" name="qty" class="txt qty" value="" /> 
<br/> 
Price: 
<input type="text" name="price" class="txt price" value="500" /> 
<br/> 
Total: 
<input type="text" name="total" class="txt total" value="" /> 

你的JavaScript:

然後,在你keyup方法:

$('.qty').keyup(function() { 
    var sibs = $(this).siblings(); 
    var quantity = this.value; 
    var priceItem = sibs.filter(".price").val(); 
    var total = quantity * priceItem; 
    sibs.filter(".total").val(total); 
}); 

演示:http://jsfiddle.net/hungerpain/bCKxW/

+0

謝謝!這是更好:) – yovierayz

+0

很高興幫助..標記爲正確的答案和upvote,如果這有助於你:) – krishgopinath

+1

好吧,我忘了它:D再次感謝你:) – yovierayz

0

如果您input fields id正在尋找像qty_1price_1total_1 那麼你可以這樣做:

$('input[id^=qty]').keyup(function() { 

     var quantity = $(this).val(); 
     var idAttr = $(this).attr('id').split('_'); 
     var i = idAttr[1]; 
     var priceItem = $("#price_" + i).val(); 
     var total = quantity * priceItem ; 
     $("#total_" + i).val(total); 
});