Javascript检查表单金额是否在+;/-内匹配0.10

Javascript检查表单金额是否在+;/-内匹配0.10,javascript,coldfusion,Javascript,Coldfusion,此脚本检查是否正确输入了采购订单的金额与行项目计算的金额。我的问题是它太准确了。我需要考虑到小的差异,由于项目是按重量定价。我需要考虑至少0.10美元的差额 还有。一旦触发脚本并通知用户金额不匹配,用户就不能再提交表单而不刷新页面 <script> function validateTotals() { var amount_incorrect = false; var u=document.forms["complete_purchase_order"]["total_cost_

此脚本检查是否正确输入了采购订单的金额与行项目计算的金额。我的问题是它太准确了。我需要考虑到小的差异,由于项目是按重量定价。我需要考虑至少0.10美元的差额

还有。一旦触发脚本并通知用户金额不匹配,用户就不能再提交表单而不刷新页面

<script>
function validateTotals()
{
var amount_incorrect = false;

var u=document.forms["complete_purchase_order"]["total_cost_original"].value;
if (u!=<cfoutput>#NumberFormat(po_total_original, '99999.99')#</cfoutput>)
  {
    amount_incorrect = true;
  }

var v=document.forms["complete_purchase_order"]["total_cost_received"].value;
if (v!=<cfoutput>#NumberFormat(po_total_received,'99999.99')#</cfoutput>)
  {
    amount_incorrect = true;
  }

if (amount_incorrect)
  {
   alert('Incorrect Original/Received Total');
   return false;
  }

}
</script>

函数validateTotals()
{
var金额不正确=错误;
var u=文件。表格[“完成采购订单”][“总成本”]。价值;
如果(u!=#数字格式(po#u总计(u原件,'99999')#)
{
金额不正确=正确;
}
var v=文件。表格[“完成采购订单”][“收到的总成本”]。价值;
如果(v!=#数字格式(收到的订单总数,'99999')#
{
金额不正确=正确;
}
如果(金额不正确)
{
警报(“不正确的原件/收到的总额”);
返回false;
}
}
编辑:把事情弄清楚。用户逐行输入采购订单详细信息。计算行总计,然后计算采购订单总计

在某些情况下,数量最多为两个小数点。 示例:数量8.15 x价格4.15=33.8225。我四舍五入到最近的一便士33.82

我们如何添加与供应商如何添加的细微差异,将为整个采购订单留下约1至2美分的差异。更糟糕的情况是10美分。我希望订单能够完成,即使我们收到的订单金额与他们发送的订单金额相差+/-10美分

目前正在使用Coldfusion解决此问题。我更希望在检查值之前不要提交表单

    <cfif #FORM.total_cost_original# NEQ #po_total_original# OR #FORM.total_cost_received# NEQ #po_total_received#>
        <cfif #FORM.total_cost_original# LT (#po_total_original# - .10) OR #FORM.total_cost_original# GT (#po_total_original# + .10)
                OR #FORM.total_cost_received# LT (#po_total_received# - .10) OR #FORM.total_cost_received# GT (#po_total_received# + .10)>

这将中止脚本并将用户重定向回表单页。

您可以这样做

if (
       !(
             u <= <cfoutput>#NumberFormat(po_total_original+0.10, '99999.99')#</cfoutput> 
          && u >= <cfoutput>#NumberFormat(po_total_original-0.10, '99999.99')#</cfoutput>
        )
   )
if(
!(
u=#数字格式(po#u总数#u原始值-0.10,'99999')#
)
)

您可以对变量
v

@Oriol执行相同的操作,这是ColdFusion语法。看起来它可能是正确的。@user3556177一位智者曾经告诉我,一定要用美分来计算货币。这避免了取整问题。这并不难做到,而且一直以来都是一个不错的选择。这里没有什么问题。请添加您期望发生的事情、实际发生的事情以及您试图解决问题的方法。您的代码没有对
u
v
进行任何比较。你试过什么?你可以按照前面的建议用美分计算,然后减去u和v,然后测试值是否在你期望的范围内。为了更简洁,如果(abs(u-#NumberFormat(po_total_original,'99999')#怎么样