2013-05-26 27 views
1

所以我有一個表格,當您在數量和價格框中輸入一個數字時,它將它們在分機框中合計,因爲它應該。 隨着您繼續添加更多數量和價格的行,它會繼續計算總計並填充物料合計,但它不會按原樣添加稅額並填充「合計」框。 如果您在物料總計框中手動輸入金額,那麼稅金和總金額將自動填充,並且總額是正確的。我試過使用onChange,onKeyup,甚至onInput,但似乎沒有任何工作。無法獲取輸入框來填充onKeyup或onChange

這裏是我的營業稅腳本:

function tax(){ 
var material = document.getElementById('material').value; 
var salestax = Math.round(((material/100) * 8.1)*100)/100; 
var total = (material*1) + (salestax * 1); 

document.getElementById('material').value = material; 
document.getElementById('salestax').value = salestax; 
document.getElementById('total').value = total; 
} 

的這裏是與腳本的HTML:

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Material Total</td> 
<td><input type="text" name="material_total"style="width: 55px"id="material"onChange="tax()"></td> 
</table> 

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Sales Tax</td> 
<td><input type="text" name="sales_tax" style="width: 55px" id="salestax" onChange="tax()"></td> 
</table> 

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Shipping</td> 
<td><input type="text" name="ship_cost" style="width: 55px" id="shipping"></td> 
</table> 

<table> 
<td style="width: 40px;"> 
<td style="width: 465px;" class="auto-style6">Total</td> 
<td><input type="text" name="total_parts_cost" style="width: 55px" id="total"></td> 
</table> 

更新質疑:這樣玩它之後,我發現出onpropertychange將使窗體工作,但只在IE瀏覽器(我使用IE 10),但不是在Firefox。我包含了我用來填充自動填充Ext框的Qty和Price框的代碼,因爲它可以工作,我使用onkeyup。我不明白爲什麼它不適用於稅收部分。

enter code here function multiply1() { 
var extend1 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "1_value" + i; 
    extend1 = extend1 * document.getElementById(id).value; 
} 
document.getElementById("extend1").value = extend1; 
summate(); 
} 

function multiply2() { 
var extend2 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "2_value" + i; 
    extend2 = extend2 * document.getElementById(id).value; 
} 
document.getElementById("extend2").value = extend2; 
summate(); 
} 

function multiply3() { 
var extend3 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "3_value" + i; 
    extend3 = extend3 * document.getElementById(id).value ; 
} 
document.getElementById("extend3").value = extend3; 
summate(); 
} 

function multiply4() { 
var extend4 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "4_value" + i; 
    extend4 = extend4 * document.getElementById(id).value; 
} 
document.getElementById("extend4").value = extend4; 
summate(); 
} 

function multiply5() { 
var extend5 = 1; 
for (var i = 1; i <= 2; i++) { 
    var id = "5_value" + i; 
    extend5 = extend5 * document.getElementById(id).value; 
} 
document.getElementById("extend5").value = extend5; 
summate(); 
} 

function summate() { 
var material = 0; 
for (var i = 1; i <= 5; i++) { 
    var id = "extend" + i; 
    material = material + document.getElementById(id).value * 1; 
} 
document.getElementById("material").value = material; 
} 

回答

1

我想我明白你問:因爲它正在改變編程OnChange事件不點火的材料中,因此不會着火。

您可以手動觸發此功能。看起來您正在修改summate()函數中的材質框。爲了使料盒註冊的改變,下面一行添加到summate()函數的末尾:

document.getElementById("material").onchange(); 

希望這是你想要的。我想你可能不得不在某些數量或其他領域添加這種類型的東西,如果你希望它在盒子被修改時更新。

編輯:這隻會在你的材質元素設置了onchange屬性(我注意到你改變了它的輸入)時才起作用。

+0

感謝您對尼羅河的幫助,在您回答時,我一直在玩弄它,並發現將onchange更改爲onpropertychange可以使窗體正常工作。 – Jason

+0

真的嗎?您的更新版本不適用於我的Firefox或Chrome。 – Nile

+0

它只需要在IE中工作,因爲它將在技術人員Toughbook上使用。由於Toughbook僅用於服務工作,因此他們不會使用其他瀏覽器選項。 – Jason

相關問題