2017-10-09 152 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不,我不知道 –

相關問題