【问题标题】:Javascript check form amounts match within +/- 0.10Javascript 检查表格金额在 +/- 0.10 范围内匹配
【发布时间】:2015-06-19 11:35:39
【问题描述】:

此脚本检查输入的采购订单金额与行项目计算的金额是否正确。我的问题是它太准确了。由于按重量计价的物品,我需要考虑到小的差异。我需要允许至少 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>

编辑:把事情弄清楚。用户逐行输入采购订单详细信息。计算行总计,然后计算 PO 总计。

在某些情况下,数量最多为小数点后两位。 示例:数量 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)>

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

【问题讨论】:

  • @Oriol 这是 ColdFusion 语法。看起来可能是正确的。
  • @user3556177 一位智者曾经告诉我,要始终以美分计算货币。这避免了舍入问题。做起来不难,一直都是不错的选择。
  • 这里没有真正看到问题。请添加您期望发生的情况、实际发生的情况以及您尝试解决的问题。
  • 您的代码没有在 u 和 v 之间进行任何比较。你试过什么?您可以按照前面的建议以美分计算,然后减去 u 和 v 并测试值是否在您期望的范围内。

标签: javascript coldfusion


【解决方案1】:

你可以这样做。

if (
       !(
             u <= <cfoutput>#NumberFormat(po_total_original+0.10, '99999.99')#</cfoutput> 
          && u >= <cfoutput>#NumberFormat(po_total_original-0.10, '99999.99')#</cfoutput>
        )
   )

您可以对变量 v 执行相同操作。

【讨论】:

  • 为了更简洁,如果( abs( u - #NumberFormat(po_total_original, '99999.99')# )
猜你喜欢
  • 2017-10-19
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
相关资源
最近更新 更多