2012-12-07 37 views
0

我試圖讓這個字段(訂單成本),當我改變數量,以反映新的成本更新(數量*價格)ASP頁與JavaScript的onChange數學

<td class="result" align="right">$<Input type="text" maxLength="9" style="text-align:right; width:55px;" align="right" id="OC<%=i %>" value="<%=formatnumber(rstBevInventory("avg_unit_cost"),2)*proposed %>"/></td> 

它計算總原,但是當我改變數量,它調用此JavaScript函數:

function reCalcOrder(i){ 
    document.getElementById("OC"+i).value = document.getElementById("P"+i).value * document.getElementById("Q"+i).value; 
    cost = document.getElementById("OC"+i).value; 
    Math.round(cost * 100)/100; 
    document.getElementById("OC"+i).set("value", "cost"); 
     if (document.getElementById("Q"+i).value < 0){ 
      document.getElementById("Q"+i).value = 0; 
     } 
} 

我得到了太多的數字,好像這是因爲使用Javascript處理乘法的方式。當Qty字段改變時,有沒有辦法讓ASP響應?因爲ASP似乎沒有問題地進行數學運算。

提前致謝!

+1

我還沒有看到DOM對象.set()方法之前。它也不適用於我。你有沒有把它添加到原型? –

回答

1

是的,有,使用Ajax。但我相信,如果你改變這一行也將修復,如果問題:

Math.round(cost * 100)/100; 

cost = Math.round(cost * 100)/100; 

另一種選擇是使用Number.prototype.toFixed

cost = cost.toFixed(2); 
+0

這樣做了,謝謝!現在的一個問題是,如果出現類似「36.8」的情況,它不會添加零,但這是一個小問題。 – fullOfQuestions

+0

'toFixed'應該解決這個問題。見https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed – bfavaretto

+0

我想通了......問題是成本是作爲一個字符串來的,所以我不得不先把它作爲數字。再次感謝你的幫助! – fullOfQuestions