2014-10-01 33 views
0

我這行的jqueryjQuery如何多重複元素?

$('#qty input').on('input', function() { 
       var price = $(this).prev('#price input').val(); 
       var qty = $(this).val(); 
       $('#amount').html(parseFloat(price * qty).toFixed(2)); 
       $('#linetotal input').val(parseFloat(price * qty).toFixed(2)); 
      }); 

和它的HTML

<tr> 
    <td><select name='itemone[]'> 
     <?php echo $items; ?> 
    </select></td> 
    <td><input name='itemtwo[]' type="text" class="irow"></td> 
    <td id="price"><input name='itemthree[]' type="number" step="any" class="irow" value="0.00"></td> 
    <td id="qty"><input name='itemfour[]' type="number" step="any" class="irow" value="1"></td> 
    <td id="linetotal" class="text-right"><p id="amount">0.00</p> 
     <input name='itemfive[]' type="hidden" class="irow" value="0" > 
    </td> 
</tr> 

它做什麼它來計算第三TD和第四TD和結果的值將在最後TD顯示。它成功了。但是,當我點擊一個按鈕時,它會將新的表格數據複製到tr,然後使用相同的「id」。現在,該行的計算不起作用。

他們是一種方式,我可以使用相同的ID進行計算,即使我有兩個或更多相同的ID?

我試過了sibling(),next(),prev(),我沒有成功。

你如何幫助我。

TIA, 尼米茲

編輯:

這裏的成功形象:https://docs.google.com/file/d/0B6f93ZQiD1h_V0dvbThocVdlekU/edit?usp=drivesdk

如果兩個或更多的TR(不成功):https://docs.google.com/file/d/0B6f93ZQiD1h_MmxzYUVLT3JzQWs/edit?usp=drivesdk

回答

1

您將希望從使用ID更改類到目標您的元素。

Here是一個工作版本,該html看起來有點雜亂,但它是您的添加類屬性的重複副本。

每一行將獨立計算總數。

HTML:

<table> 
<tr> 
    <td> 
     <select name='itemone[]'> 
      <?php echo $items; ?> 
     </select> 
    </td> 
    <td> 
     <input name='itemtwo[]' type="text" class="irow" /> 
    </td> 
    <td id="price" class="price">price 
     <input name='itemthree[]' type="number" step="any" class="irow" value="0.00" /> 
    </td> 
    <td id="qty" class="qty"> 
     <input name='itemfour[]' type="number" step="any" class="irow" value="1" /> 
    </td> 
    <td id="linetotal" class="linetotal text-right"> 
     <p id="amount" class="amount">0.00</p> 
     <input name='itemfive[]' type="hidden" class="irow" value="0" /> 
    </td> 
</tr> 
<tr> 
    <td> 
     <select name='itemone[]'> 
      <?php echo $items; ?> 
     </select> 
    </td> 
    <td> 
     <input name='itemtwo[]' type="text" class="irow" /> 
    </td> 
    <td id="price" class="price">price 
     <input name='itemthree[]' type="number" step="any" class="irow" value="0.00" /> 
    </td> 
    <td id="qty" class="qty"> 
     <input name='itemfour[]' type="number" step="any" class="irow" value="1" /> 
    </td> 
    <td id="linetotal" class="linetotal text-right"> 
     <p id="amount" class="amount">0.00</p> 
     <input name='itemfive[]' type="hidden" class="irow" value="0" /> 
    </td> 
</tr> 

JS:

$(".qty :input").change(function() { 
    var price = $(this).closest('tr').find('.price :input').val(); 
    var qty = $(this).val(); 
    $(this).closest('tr').find('.amount').html(parseFloat(price * qty).toFixed(2)); 
    $(this).closest('tr').find('.linetotal input').val(parseFloat(price * qty).toFixed(2)); 
}); 
+0

Hello @angusf,比你的代碼。它運行良好,但我想在編輯時更改它。我試圖將其更改爲'$(「.qty:input」)。on',但它不起作用。你能幫助我嗎? – 2014-10-01 07:35:41

+0

@NimitzEBatiocoJr。 .change()事件執行此操作。如果您只是在文本框中輸入數字,請確保您選中或點擊其他地方以觸發事件,或者確保您的.price輸入的值不是0.0。 – angusf 2014-10-01 08:01:45

+0

是的,它會改變,但如果在改變文本框上的數字時它會更好,它會改變輸出值。那麼,謝謝你的代碼。 – 2014-10-02 04:21:50

0

我不是100%肯定你是什麼試圖去做。但我認爲,這些將幫助:

http://api.jquery.com/first/ http://api.jquery.com/last/

jQuery的選擇應返回的事情,所以第一個或最後可以給你你想要的清單。

+0

想象或想象出來,那我有10個相同的TR ...然後我會計算每行。 這是價格*數量=總價格 我成功地實現了這一點,但是,當兩個或更多相同的TD存在時,第二個TD將停止計算(第二行) – 2014-10-01 01:22:25