根据html输入id进行的Javascript计算结果始终为1

根据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

我在使用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"/>  
    <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没有捕捉到这一点。