簡體   English   中英

更改一個字段會導致其他帶前綴的字段更改-Adobe Acrobat Standard DC

[英]Changing one field causes other prefixed fields to change - Adobe Acrobat Standard DC

當我在其他字段中插入文本/數字時,表單中的兩個字段會更改,為什么? 它們沒有連接,例如,如果我在請求的字段中輸入我的全名(請參閱所截取的屏幕截圖),它將更改兩個字段“ 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; 

總價格(總價):計算總價格減去折扣

// 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事件是該序列的一部分,並且只要更改字段值,就會執行完整的Calculation序列。 因此,如果您有一些默認值以及使用它們的一些計算,則將重新計算計算出的字段值。

但是,現在,邏輯本身存在很多混亂,並且幾乎沒有機會獲得可靠的結果。

首先,最好的做法是將(計算鏈的)所有計算整合到一個腳本中,或者將其附加到計算鏈的最后一個結果字段,或者將其附加到不可見的只讀字段(否則不是)涉及任何事物(現場事件序列是其起作用的原因)。

根據示例可以得出的結論,您在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 ;

那應該做到的。

如果您在獨立字段(而不是“總價格”字段)中使用此計算,則應將最后一行更改為

this.getField("Total Pris").value = grandtotal ;

計算就這么多。

另一個建議(嗯,這有點像我的煩惱……):我知道Acrobat中的自動場識別非常方便。 但是,結果字段名稱不是很有用,並且(更重要的是)它防止用戶對表單進行認真的分析,從而導致邏輯錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM