2017-10-09 503 views
0

我试图创建一种形式:使用Adobe Acrobat Pro的DC自定义计算脚本建议

  1. 一系列的分子和分母的计算
  2. 如果该字段为空,但不包括在计算
  3. 计算要实时更新,而不是等待每个字段在它计算之前有一个数字。

这是表格中的唯一计算,所以不使用更改计算顺序。在该文件中的JavaScript,我有

this.calculateNow(); 

,并在该领域的自定义计算脚本,我有我有

(function() { 

var v1 = +getField("Text1").value; 
var v2 = +getField("Text2").value; 
var v3 = +getField("Text3").value; 
var v4 = +getField("Text4").value; 
var v5 = +getField("Text5").value; 
var v6 = +getField("Text6").value; 
var v7 = +getField("Text7").value; 
var v8 = +getField("Text8").value; 
var v9 = +getField("Text9").value; 
var v10 = +getField("Text10").value; 

event.value = (v2 * v4 * v6 * v8 * v10) !== 0 ? ((v1 * v3 * v5 * v7 * v9)/(v2 * v4 * v6 * v8 * v10)) : ""; 
})(); 

的问题:

  1. ,计算不不能实时计算
  2. 所有字段仍然必须输入才能进行计算。
  3. 如果输入零,计算将不会运行。
+0

应该做些什么0:“”'做?为什么不只是'“”' –

+0

我希望如果任何分母字段为空,或者为0,那些字段将不会包含在计算中。我会按照你的建议尝试,并减少重复的代码! – drwnicc

回答

1

您的代码有点重复。你可以使用一个数组包含字段ID:

const fields = Array.from({length:10}, (_,i)=>"Text"+(i+1)); 

然后,我们可以映射字段到它们的价值和使用的或操作员以填充未设置的字段:

const values = fields.map(f => +getField(f).value || 1); 

即阵列然后可以减少到一定的价值,例如带有多项式:

const result = values.reduce((a,b) => a*b) 
+0

此代码是否已经过验证,如果有,是使用哪个Acrobat版本? –

+0

@max不,我不知道 –

相关问题