Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改一个字段会导致其他前缀字段更改-Adobe Acrobat Standard DC_Javascript_Pdf_Adobe_Acrobat - Fatal编程技术网

Javascript 更改一个字段会导致其他前缀字段更改-Adobe Acrobat Standard DC

Javascript 更改一个字段会导致其他前缀字段更改-Adobe Acrobat Standard DC,javascript,pdf,adobe,acrobat,Javascript,Pdf,Adobe,Acrobat,当我在其他字段中插入文本/数字时,表单中有两个字段会发生更改,为什么?它们没有连接,例如,如果我在请求的字段中写入我的全名(参考拍摄的屏幕截图),它会更改两个字段“Fratrukket Rabatt(折扣价格)”和“Total pris(总价)” Fratrukket-Rabatt(折扣价格):计算总折扣 // Get first value as number var v1 = +getField("Rabatt i prosent").value; // Get second value

当我在其他字段中插入文本/数字时,表单中有两个字段会发生更改,为什么?它们没有连接,例如,如果我在请求的字段中写入我的全名(参考拍摄的屏幕截图),它会更改两个字段“Fratrukket Rabatt(折扣价格)”和“Total pris(总价)”

Fratrukket-Rabatt(折扣价格):计算总折扣

// Get first value as number 
var v1 = +getField("Rabatt i prosent").value;

// Get second value as number 
var v2 = +getField("Total pris").value;

// Calculate the result
event.value = (v1 / 100) * v2; 
Total pris(总价):计算总价减去折扣

// Get first value as number 
var viva1 = +getField("Pris per dekk").value;

// Get second value as number 
var viva2 = +getField("Antall dekk").value;

// Get third value as number 
var viva3 = +getField("Pris på arbeid").value;

// Get fourth value as number 
var viva4 = +getField("Fratrukket Rabatt").value;

// Calculate the result
event.value = ((viva1 * viva2) + viva3) - viva4;  
这是一个常见的问题,请帮助


这是绝对正确的行为,你会遇到

查看Acrobat JavaScript文档(Acrobat SDK文档的一部分,可从Adobe网站下载),这里有一个字段事件序列的说明和图表。与我们的问题相关的是,Calculate事件是该序列的一部分,每当字段值发生更改时,就会执行完整的计算序列。因此,如果您有一些默认值,并使用它们进行了一些计算,则会重新计算计算的字段值

然而,现在,逻辑本身存在相当多的混乱,并且一开始就几乎没有机会得到可靠的结果

首先,将(计算链的)所有计算合并到一个脚本中,并将其附加到计算链的最后一个结果字段,或附加到不可见的只读字段(该字段事件序列是其工作的原因),这被认为是最佳做法

根据示例得出的结论,您在Total Pris字段中的脚本可能如下所示:

请注意,实际上,计算中存在逻辑缺陷,因为折扣依赖于计算折扣后计算的总额

var deckprice = this.getField("Pris per dekk").value * this.getField("Antall dekk").value ;
var subtotal = deckprice + this.getField("Pris på arbeid").value*1 ;
var discount = subtotal * this.getField("Rabatt i prosent").value / 100 ;
var grandtotal = subtotal - discount ;

this.getField("Fratrukket Rabatt").value = discount ;
event.value = grandtotal ;
这应该可以做到

如果在独立字段(而不是“总Pris”字段)中使用此计算,则最后一行将更改为

this.getField("Total Pris").value = grandtotal ;
计算到此为止


另一个建议(嗯,这有点让我恼火……):我知道Acrobat中的自动场识别非常方便。但是,结果字段名不是很有用,而且(更重要的是)它阻止用户对表单进行认真的分析,从而导致逻辑错误。

请共享有问题的PDF进行分析。我假设Max Wyss是正确的,因为当您更改名称时,表单只需重新计算,从而用正确的计算值替换错误的默认值。但是,可以肯定的是,在您描述的场景中,总价格的变化到底如何?