2017-03-07 33 views
0

我想要改變一個總金額根據其他領域inout在一個循環或相同的字段名稱的值。如何只彙總JavaScript或jQuery中的重複字段foreach循環的單個值?

這是我的表格。

<?php 
    $sudentname = $_POST['sudentname']; 
    $admissionnmbr = $_POST['admissionnmbr']; 
    $amount = $_POST['amount']; 
?> 
<form method="POST" action="/" > 
    <table class="paymentConfirmTblMutiSt"> 
     <tbody> 
      <thead> 
       <tr> 
        <th>Admission No</th> 
        <th>Amount</th> 
       </tr> 
      </thead> 

     <?php 
     foreach($sudentname as $key => $v){ 
      $totalAmount +=$amount[$key]; // to sum all of amount 
     ?> 

        <tr> 
         <td><input type="text" name="sudentname[]" value="<?= $sudentname[$key] ?>"></td> 
         <td><input type="text" name="admissionnmbr[]" value="<?= $admissionnmbr[$key] ?>"></td> 
         <td><input type="text" name="amount[]" class="inputChangeVal" value="<?= number_format((float)$amount[$key], 2, '.', ',') ?>"></td> 
        </tr> 
     <?php } ?> 
     </tbody> 
    </table> 
    Total payable : <input type="text" name="totalAmount" value="<?=number_format((float)$totalAmount, 2, '.', ','); ?>" class="totalAmount"/> 
</form> 

所以這顯示了學生的數量和細節,根據他們的姓名和錄取號碼填寫在以前的表格中。 如果用戶爲兩名學生支付費用,這將如何顯示:http://prnt.sc/eh0ygd(我沒有顯示上面代碼中的所有字段)

現在,如果用戶想要更改學生數量,他只需點擊字段並改變它,因爲這些是文本輸入。

我的問題是,當用戶更新「amount[]」這應該是calculted(SUM),應在「TotalAmount」 由於場的這個值/名稱dispalyed是在一個循環或相同名稱我很困惑如何做到這一點。

以下代碼的實時更改正常工作。

<script> 
jQuery(document).ready(function() 
    { 
     function updateTotal() 
     { 
      var price = parseFloat(jQuery(".inputChangeVal").val()); 
      var total = (price + 1) * 1.05; // I want to change this line to SUM the Amount[] 
      var total = total.toFixed(2); 
      jQuery(".totalAmount").val(total); 
     } 
     jQuery(document).on("change, keyup", ".inputChangeVal", updateTotal); 
    }); 
</script> 

我只是用另一個計算來檢查var total。而用戶在'inputChangeVal'/ in amount[]

變化 這一個改變「總金額」活潑的價值我想是SUM的amount[],並表明在'totalAmount'當用戶更新amount[]領域

我怎麼有更新這個jQuery?

回答

0

使用上較金額

例如輸入字段一個jQuery迭代循環:

Sum = 0; 
jQuery("input.inputChangeVal").each(function(index, value) { 
    Sum += parseInt(jQuery(this).val()); //index represents the number of input (array elements 0, 1, 2, etc.) 
    }); 
jQuery(".totalAmount").val(Sum); 

總和現在所代表的價值的總和金額輸入字段

+1

您正在遍歷一個字符串:''input [name ='amount']「'。第一個元素是'i',最後一個是''''''。 – undefined

+0

jQuery的每個函數都會照顧您在我的評論 –

+0

@TVAvanHesteren中代表的迭代,感謝那..這是我現在更新代碼的方式:https://paste.ofcode.org/Bi4QKsaKktL4u5rmYA4amM但我得到這個錯誤'未捕獲的類型錯誤:不能使用'在'運營商來搜索input.inputChangeVal'長度' –

0

也許你需要的東西如:

<script> 
jQuery(document).ready(function() 
    { 
     function updateTotal() 
     { 
      var price = 0; 

      jQuery(".inputChangeVal").each(function(){ 
       var t = parseFloat($(this).val()); 
       price = price + t; 
      }); 

      var total = total.toFixed(2); 
      jQuery(".totalAmount").val(total); 
     } 
     jQuery(document).on("change, keyup", ".inputChangeVal", updateTotal); 
    }); 
</script>  

編輯:刪除行和基數來自parseFloat的參數...

+0

這工作..但我不認爲這是完美的方式。爲什麼你在var t = parseFloat($(this).val(),10)中使用'10';'我只想SUM ..沒有別的..所以我刪除了'var total =(price + 1)* 1.05; '並更新了一行'var total = price.toFixed(2);'..所以現在它的工作原理就是我想要用這些更改.. 更新您的答案..我會接受.. –

+0

按要求更改: ) – KennyDope