我正在嘗試製作一個腳本,您可以在其中輸入產品名稱,數量,價格和稅率%。 然後計算每個產品的總成本和總計。 唯一的問題是我每次添加新產品時都會添加新的表單域。對動態表單域進行計算
現在我的問題:計算每個產品的總價格和整體總額的最佳方法是什麼?
這是我到目前爲止,但我很堅持,因爲我是新來的JavaScript。它還將字段保存到mysql中,所有工作正常,我只是停留在每個產品和總計的總價格上。
提前致謝!
<form method="post">
<div id="itemRows">
product: <input type="text" name="add_product" />
amount:<input type="text" id="value1" name="add_qty" size="4" onChange="output();"/>
price:<input type="text" id="value2" name="add_price" onChange="output();"/>
<select type="text" name="add_tax" onChange="output();">
<option value="21">21%</option>
<option value="6">6%</option>
<option value="0">0%</option>
</select>
<input onClick="addRow(this.form); output()" type="button" value="Save product line..." />
</div>
<p><input type="submit" name="ok" value="Save Changes"></p>
</form>
<p id="result"> </p>
</div>
<script type="text/javascript">
var rowNum = 0;
function addRow(frm) {
rowNum ++;
var row = '<p id="rowNum'+rowNum+'">product: <input type="text" name="product[]" id = "product['+rowNum+']" value="'+frm.add_product.value+'"> amount: <input type="text" id="qty['+rowNum+']" name="qty[]" size="4" value="'+frm.add_qty.value+'"> price: <input type="text" id="price['+rowNum+']" name="price[]" value="'+frm.add_price.value+'">tax: <select type="text" id="tax['+rowNum+']" name="tax[]" value="'+frm.add_tax.value+'"><option value="21">21%</option><option value="6">6%</option><option value="0">0%</option><input type="button" value="Remove" onclick="removeRow('+rowNum+');output()"><div id="rowResult[rowNum]"></div> <div id="rowResult[rowNum]"> </div></p>' ;
jQuery('#itemRows').append(row);
frm.add_qty.value = '';
frm.add_product.value = '';
frm.add_price.value = '';
frm.add_tax.value = '';
}
function removeRow(rnum) {
jQuery('#rowNum'+rnum).remove();
}
</script>
<script type="text/javascript" language="javascript" charset="utf-8">
function output(){
var tableTotal = 0;
var rowTotal = 0;
qtyArr = new Array();
priceArr = new Array();
taxArr = new Array();
$("input[name^='qty']").each(function(index) {
qtyArr.push(parseInt($(this).val()));
});
$("input[name^='price']").each(function(index) {
priceArr.push(parseInt($(this).val()));
});
$("select[name^='tax']").each(function(index) {
taxArr.push(parseInt($(this).val()));
});
$("div[id^=rowResult]").each();
for(i = 0; i< qtyArr.length; i++)
{
rowTotal = qtyArr[i] * priceArr[i] * ((taxArr[i]/100)+1);
tableTotal+=rowTotal;
}
document.getElementById('result').innerHTML = "Total: " + tableTotal;
}
</script>
非常感謝,它工作得很好只是一個更多的事情,我正在努力...我想顯示在每個產品行後面的rowTotals ...任何意見呢?再次感謝! – user3374948
你可以在addRow函數中爲每行添加一個帶有rowResult [rowNum]的div,並將其設置爲輸出,就像獲取輸入值一樣。用'$(「div [id^= rowResult]」)。each()'; –
嗯,我試過了,但它仍然不顯示每行的值不幸的是...和最奇怪的是......它只改變了提交總字段...而我使用onchange ...不應該它直接顯示那樣? – user3374948