2012-03-21 60 views
1

我不知道如何基本上使用這個。我想使用javascipt數組雖然。Autocompute使用數據庫中提供的ajax值onchange

那麼我在這裏有一個選擇選項,數據庫中的值和選擇是動態的。 「添加行」按鈕將添加另一行選項選擇:

<td>Items </td> 
<td style="text-align:left;"> 
    <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" /> 
    <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" /> 

    <TABLE id="dataTable" width="350px" > 
     <TR> 
     <TD><INPUT type="checkbox" name="chk[]"/></TD> 
     <TD> 
      <select name="ItemNo[]" id="select" value="ItemNo" onChange="this.disabled=true;"> 

      <?php 
       $sql2="select * from jewelry_system.item where NumStored !='0' order by ItemName asc"; 
       $result2 = mysql_query($sql2); 
       while($row2=mysql_fetch_array($result2)){ 
      ?> 

      <option value="<?php echo $row2['ItemNo']?>"> 
       <?php echo $row2['ItemName'];?>  
       Php:<?php echo $row2['SalePrice'];?> </option> 
      <?php } ?> 

      </select> 
      </TD> 
     </TR> 
    </TABLE> 
</td> 
</tr> 

這是什麼應該由ajax更改?

<tr> 
    <td>Total Payment (Php):</td> 
    <td> <div id="tpayment">0.00</div> </td> 
</tr> 

我想計算值的合計支付的onChange中選擇選項。並且因爲值只能更改一次,我應該使用數組?我對ajax無能爲力,試圖在w3schools學習,但失敗了。

請感謝

回答

0

你可能並不需要AJAX,除非你需要在你的數據庫設置的東西點擊某種形式的「提交」按鈕之前。看起來您應該能夠在您使用PHP構建頁面時將所有信息存儲在您的選擇中。您需要使用javascript在文檔中顯示/隱藏選擇內容。

添加; updateTotal()您選擇onChange事件:

<select name="ItemNo[]" id="select1" value="ItemNo" onChange="this.disabled=true;updateTotal()"> 

此功能然後添加到您的網頁或JavaScript文件:

<head> 
    <script language="javascript" type="text/javascript"> 
     function updateTotal() { 
      var dropdown = document.getElementById('select1'); 
      var total = 0; 
      for (var i=0; i<dropdown.length; i++){ 
       if (dropdown.options[i].selected) { 
        total += dropdown.options[i].value; 
       } 
      } 
      document.getElementById('tpayment').innerHTML = total; 
     } 
    </script> 
</head> 

既然你將成爲添加/刪除行,您將需要像跟數組一樣跟蹤它們 - 可能是全局的。

在你的JavaScript的開頭,聲明一個全局數組來存儲你的數據表是這樣的:

var selects = new Array(); 

您還需要更新您的添加/刪除電話:

<INPUT type="button" value="Add Row" onclick="addRow('dataTable','select1')" /> 
<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable','select1')" /> 

然後當你打電話給你addRow功能,這樣做:

function addRow(rowname,selectname) { 
    /* ... original function stuff ... */ 
    selects.push(selectname); /* this will add the selectname to the selects array */ 
} 

同樣地,當你打電話給你[R removeRow功能,這樣做:

function removeRow(rowname,selectname) { 
    /* ... original function stuff ... */ 
    selects.splice(selects.indexOf(selectname),1); 
    updateTotal(); /* since selected items might have been removed */ 
} 

最後,我們要修改我們原來的功能是這樣的:

function updateTotal() { 
    var total = 0; 
    for (var h=0; h<selects.length; h++) { 
     var dropdown = document.getElementById(selects[h]); 
     for (var i=0; i<dropdown.length; i++){ 
      if (dropdown.options[i].selected) { 
       total += dropdown.options[i].value; 
      } 
     } 
     document.getElementById('tpayment').innerHTML = total; 
    } 
} 
+0

沒有什麼變化= _ = – 2012-03-21 05:05:37

+0

的getElementById和innerHTML的均區分大小寫,以便確保那些是正確的(我把它固定在我有innerHtml的地方)。 – jiy 2012-03-21 05:09:18

+0

此外,您還需要確保每個