为什么我的计算总数没有在 Acrobat 中正确更新?

Why is my calculation total not updating correctly in Acrobat?

我正在 Acrobat 中处理订单表格,它计算在下拉列表中选择的任何州的销售税。如果我输入一项,则不会将税加到总额中。如果我返回并更改状态,它会正确更新销售税,但总计包括以前的销售税,而不是当前的销售税。

我收到这个错误:

InvalidSetError: Set not possible, invalid or unknown.
Field.value:8:Field TOTAL AMOUNT:Calculate

这是我计算的总数:

var a=this.getField("Subtotal without customization charges");
var b=this.getField("Customization Charges");
var c=this.getField("Tax3");
var d=this.getField("Shipping");
var e=this.getField("Express Handling");
var f=this.getField("Discount Total");
var g=this.getField("TOTAL AMOUNT");
g.value=(a.value+b.value+c.value+d.value+e.value)-(f.value);

"State" 字段下拉列表:

if(event.target.value!="State")
{
this.getField("Sales Tax").value=event.target.value;
}

"Sales Tax" 字段被隐藏并显示在 "State" 字段中选择的任何内容的导出值。

"Tax" 字段被隐藏并且是 "Customization Charges" x "Subtotal without customization charges"

的乘积

"Tax2" 字段是隐藏的并且有这样的计算:

var a=this.getField("Tax");
var b=this.getField("Discount Total");
var c=this.getField("Tax2");
c.value=(a.value)-(b.value);

"Tax3" 字段可见并且是 "Sales Tax" x "Tax2"

的乘积

由于您是 运行 您在计算事件期间的代码,因此您无法设置字段的值...因为这是计算要尝试执行的操作。这就是产生错误的原因。在代码的最后一行,您试图设置字段的值,您需要改为设置计算事件的值。所以代码看起来像这样...

var a=this.getField("Subtotal without customization charges");
var b=this.getField("Customization Charges");
var c=this.getField("Tax3");
var d=this.getField("Shipping");
var e=this.getField("Express Handling");
var f=this.getField("Discount Total");
event.value=(a.value+b.value+c.value+d.value+e.value)-(f.value);

此外,在选项标签中将税收下拉列表的 属性 更改为 "Commit selected value immediately"。

已解决!我没有创建四个字段来计算税收,而是将其合并为两个。我认为它没有按正确的顺序读取方程式,因为计算链分布在四个字段之间。

一个隐藏字段,它是下拉列表的导出值。 一个可见字段"Sales Tax"计算:

var a=this.getField("Subtotal without customization charges");
var b=this.getField("Customization Charges");
var c=this.getField("Discount Total");
var d=this.getField("Tax Calculation");
event.value=((a.value+b.value)-(c.value))*(d.value);

"TOTAL AMOUNT"字段计算:

var a=this.getField("Subtotal without customization charges");
var b=this.getField("Customization Charges");
var c=this.getField("Sales Tax");
var d=this.getField("Shipping");
var e=this.getField("Express Handling");
var f=this.getField("Discount Total");
event.value=((a.value+b.value+c.value)-(f.value))+(d.value+e.value);