Javascript检查表单金额是否在+;/-内匹配0.10
此脚本检查是否正确输入了采购订单的金额与行项目计算的金额。我的问题是它太准确了。我需要考虑到小的差异,由于项目是按重量定价。我需要考虑至少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_
<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')#怎么样