我有一个表格,输入正确使用ID等。我已经部署了一个小jQuery函数来计算表单变量。本质上,我想计算总增值税,然后是总计。
代码示例取自http://forum.jquery.com/topic/calculation-on-form-fields,可行。然而,我乘法/除法适用于增值税但增加了一些非常奇怪的结果。
示例数据输入:
siteFee = 3000
qty = 1
vat = 20
VAT函数(a * b * c) /100
计算好并给出600这是正确的但是grandTotal出现在3000611.6659999999999这没有多大意义。看起来它试图将这些值连接在一起而不是将它们加在一起,但是那时它们并没有真正发生!。
jQuery代码:
<script>
$(document).ready(function() {
function compute() {
var a = $('#siteFee').val();
var b = $('#qty').val();
var c = $('#vat').val();
var d = $('#incVAT').val();
var totalVAT = (a * b * c) / 100;
var grandTotal = a + d;
$('#incVAT').val(totalVAT);
$('#total').val(grandTotal);
}
$('#siteFee, #qty, #siteFeeID, #vat').change(compute);
});
</script>
请注意,#siteFeeID
只是另一个表单变量,我在其中执行Ajax拉取以获取#siteFee
的正确值,因此这并不重要,但我想提一下。
任何指针都会很精彩。
干杯尼克
答案 0 :(得分:2)
尝试使用parseFloat()或parseInt()函数在javascript中执行计算,因为+是javascript中连接的运算符
所以var grandTotal = parseFloat(a) + parseFloat(d);
答案 1 :(得分:2)
试试这个:
function compute() {
var a = parseFloat($('#siteFee').val());
var b = parseFloat($('#qty').val());
var c = parseFloat($('#vat').val());
var d = parseFloat($('#incVAT').val());
var totalVAT = (a * b * c) / 100;
var grandTotal = a + d;
$('#incVAT').val(totalVAT);
$('#total').val(grandTotal);
}
我没有测试过。
答案 2 :(得分:1)
字段a
和b
的字符串类型为字符串,因此它会进行字符串连接。
尝试
var grandTotal = parseFloat(a) + parseFloat(d);
答案 3 :(得分:1)
尝试替换
var grandTotal = a + d;
与
var grandTotal = Number(a) + Number(d);
答案 4 :(得分:0)
您最初也可以将变量创建为数字,这对于您需要进行的更多计算可能更清晰。
var num = new Number(value);