2014-09-01 23 views
0

當談到編碼時,我是一個極端的新手,但是無論如何它仍然存在。我有一個表格,其中有從MySQL數據庫填充的前兩列,每行獲取用戶輸入的文本框。然後寫回數據庫。這工作正常,我需要從每個文本框的用戶輸入中獲取總數,因爲他們正在輸入它,並從該頁面上較早的另一個文本框中減去該總數。我需要得到budgetmount輸入字段的總和。需要添加html輸入值,它是mysqli數組的一部分

這裏是我的表碼:

<span id="sum">0</span> 
    <?php 
     $result = mysqli_query($con,"SELECT envelopename, envelopebudget FROM envelopes"); 
     echo "<table border='1' id='table_new_paycheck'> 
     <tr> 
     <th>Envelope</th> 
     <th>Budget</th> 
     <th>Amount</th> 
     </tr>"; 
     while($row = mysqli_fetch_array($result)) { 
     echo "<input type='hidden' value='$row[envelopename]' name='envelopename[]'/>"; 
     echo "<tr>"; 
     echo "<td>" . $row['envelopename'] . "</td>"; 
     echo "<td>" . $row['envelopebudget'] . "</td>"; 
     ?><td><input type="text" name="budgetamount[]" class="textboxone"></td><?php; 
     echo "</tr>"; 
     } 
     echo "</table>"; 
     mysqli_close($con); 
    ?><br> 

這裏是jQuery腳本我試過,但它不工作:

<script language="JavaScript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> 
$(document).ready(function(){ 

    //iterate through each textboxes and add keyup 
    //handler to trigger sum event 
    $(".textboxone").each(function() { 

     $(this).keyup(function(){ 
      calculateSum(); 
     }); 
    }); 

}); 

function calculateSum() { 

    var sum = 0; 
    //iterate through each textboxes and add the values 
    $(".textboxone").each(function() { 

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

    }); 
    //.toFixed() method will roundoff the final sum to 2 decimal places 
    $("#sum").html(sum.toFixed(2)); 
} 

我試圖去與jQuery認爲這會給我即時響應,因爲他們鍵入每個文本框的值,但我不知道如何去做這件事。這是我想要的一個例子,但我無法適應它與我的數組一起工作。 Here是我正在尋找的一個例子。它涵蓋了添加部分。

感謝您的幫助。

+0

像這樣? http://jsfiddle.net/Newtt/Lseg900t/1/ – Newtt 2014-09-01 18:18:30

+0

是的,但會有一個未定義數量的值,所以我不能給特定的變量添加。唯一的變量是他們輸入到未確定數目的文本框中的任何內容。 – Mike 2014-09-01 18:21:27

+0

您可以重複剛纔的TR – Newtt 2014-09-01 18:21:49

回答

0

將keyup處理程序直接應用到返回的jQuery對象似乎工作正常。

我已經對Newtt提出的小提琴進行了更新,我認爲它會完成您要找的東西。

http://jsfiddle.net/Lseg900t/2/

注意第二個參數 「10」 使用parseInt()時:

sum += parseInt($(this).val(), 10);

這樣可以保證你會得到一個基本10整數回來。如果你沒有明確地告訴它使用base-10,如果用戶輸入「012」,這將在八進制(base-8)中解釋並且在基數爲10時具有10的值,這可能不是你正在尋找。

編輯:另外請注意,我沒有做任何NaN檢查,你做了。

編輯:似乎parseInt函數現在默認爲10進制,除非另有規定,甚至還更好的是明確的,並提供參數。

我已經調整了小提琴,進一步,允許您提到的其他用戶輸入。在這裏看到更新http://jsfiddle.net/Lseg900t/3/

+0

這仍然不適用於我的方案。不知道爲什麼除了可能它與陣列有關,但我不知道。我認爲它甚至不會調用劇本,也不會將其寫入劇本。我已經嘗試把jQuery中的document.writes語句,他們從來沒有出現,所以我不知道。 – Mike 2014-09-01 19:25:56

+0

那麼,腳本的執行絕對是第一步:) 也可以使用console.log(),輸出結束於開發者控制檯或Firebug的控制檯,如果你已經安裝了(如果你不要和你正在做JavaScript開發,你應該真的檢查它。 – v4nz 2014-09-01 21:54:20

+0

Firebug也將顯示JavaScript中遇到的任何語法/解析錯誤。 – v4nz 2014-09-01 22:02:25

相關問題