根据html输入id进行的Javascript计算结果始终为1
我在使用javascript对submit执行计算时遇到错误。无论支付金额的值是多少,支付金额输入提交“1”,总费用提交“4.95” 以下是html:根据html输入id进行的Javascript计算结果始终为1,javascript,Javascript,我在使用javascript对submit执行计算时遇到错误。无论支付金额的值是多少,支付金额输入提交“1”,总费用提交“4.95” 以下是html: <form method="POST" action="example-post-url.php" autocomplete="off" name="form" id="form"> <input type="text" id="pay_amount" name="pay_amount" value="1,794.00
<form method="POST" action="example-post-url.php" autocomplete="off" name="form" id="form">
<input type="text" id="pay_amount" name="pay_amount" value="1,794.00"/>
<input type="hidden" id="total_charged" name="total_charged" />
<input type="submit" value="submit" onclick="submitCard();" id="submitButton"/>
</form>
这里到底发生了什么事?你应该阻止原始提交
<form ... onsubmit="return false;" ...>
...
</form>
...
您应该阻止原始提交
<form ... onsubmit="return false;" ...>
...
</form>
...
试试看
而不是您现在拥有的document.forms.submit()
。无论是否解决问题,都应更改此项,因为
文档。表单
未定义。请尝试
而不是您现在拥有的document.forms.submit()
。无论是否解决问题,都应更改此项,因为
文档。表单未定义。请尝试此项
<input type="button" value="submit" onclick="submitCard();" id="submitButton"/>
而不是
<input type="submit" value="submit" onclick="submitCard();" id="submitButton"/>
试试这个
<input type="button" value="submit" onclick="submitCard();" id="submitButton"/>
而不是
<input type="submit" value="submit" onclick="submitCard();" id="submitButton"/>
当parseFloat()
例程看到不属于有效数字的内容时,将停止解析。在你的例子中,这是逗号
当您按照帖子中的建议更改代码时,可以修复逗号问题,但将值保留为字符串。如果将这两者结合起来—去掉逗号并调用parseFloat()
—效果会更好
也就是说,如果您不打算检查服务器上的支付和费用计算,请在完成后发布电子商务站点的URL。当parseFloat()
例程看到不属于有效数字的内容时,将停止解析。在你的例子中,这是逗号
当您按照帖子中的建议更改代码时,可以修复逗号问题,但将值保留为字符串。如果将这两者结合起来—去掉逗号并调用parseFloat()
—效果会更好
也就是说,如果您不打算检查服务器上的支付和费用计算,请在完成后发布电子商务站点的URL。幸运的是,这与表单的提交事件无关,更重要的是如何将value
属性的字符串类型转换为用于数学运算的数字
了解如何更好地使用parseFloat()
以下是重要部分:
parseFloat(document.getElementById('pay_amount').value.replace(',', ''));
幸运的是,这与表单的submit
事件无关,更多的是与value
属性的字符串类型如何转换为数学运算的数字有关
了解如何更好地使用parseFloat()
以下是重要部分:
parseFloat(document.getElementById('pay_amount').value.replace(',', ''));
试试这个:
<script>
function submitCard(){
var payment = parseFloat(document.getElementById('pay_amount').value);
var fee = ((payment*0.035)+3.95);
var total = payment + fee;
document.getElementById('total_charged').value = total.toFixed(2);
}
</script>
函数submitCard(){
var payment=parseFloat(document.getElementById('pay_amount').value);
风险值费用=((付款*0.035)+3.95);
var总额=付款+费用;
document.getElementById('total_charged')。value=total.toFixed(2);
}
试试这个:
<script>
function submitCard(){
var payment = parseFloat(document.getElementById('pay_amount').value);
var fee = ((payment*0.035)+3.95);
var total = payment + fee;
document.getElementById('total_charged').value = total.toFixed(2);
}
</script>
函数submitCard(){
var payment=parseFloat(document.getElementById('pay_amount').value);
风险值费用=((付款*0.035)+3.95);
var总额=付款+费用;
document.getElementById('total_charged')。value=total.toFixed(2);
}
我真的很怀疑,有了这些代码,“pay_amount”会作为“1”提交给服务器。我真的很怀疑有了这些代码,“pay_amount”会作为“1”提交给服务器。请记住在部署到生产环境之前删除console.log()调试语句。请记住删除console.log()在部署到生产环境之前调试语句。但是,您的代码远比最佳实践更充分,OP应该遵循您的建议,document.form在本例中不是未定义的,因为有一个名为“form”的表单元素在本文档中,@Luc125没有捕捉到这一点。但是,您的代码远远符合最佳实践,OP应该遵循您的建议,document。表单在本例中不是未定义的,因为本文档中有一个名为“form”的表单元素。@Luc125没有捕捉到这一点。