2017-10-09 9 views
0

Je suis en train de créer un formulaire avec:Adobe Acrobat scripts calcul personnalisé Pro DC conseils

  1. une série de numérateurs et dénominateurs pour calculer
  2. si le champ est vide, il ne figure pas dans le calcul
  3. le calcul à mettre à jour en temps réel, et ne pas attendre que chaque champ ait un nombre avant qu'il ne calcule.

Ceci est le seul calcul dans le formulaire, de sorte que la modification de l'ordre de calcul n'est pas utilisée. Dans le javascript document, je

this.calculateNow(); 

et dans le script de calcul personnalisé pour le champ, je

(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)) : ""; 
})(); 

Les questions que je vais avoir:

  1. que le calcul ne pas calculer en temps réel
  2. tous les champs doivent encore être saisis pour que le calcul se produise.
  3. Si zéro est entré, le calcul ne sera pas exécuté.
+0

Que devrait faire 0?: "" 'do ?? Pourquoi ne pas simplement '" "' –

+0

J'espère que si l'un des champs du dénominateur est vide, ou 0, que ces champs ne seront pas inclus dans le calcul. Je vais essayer comme vous l'avez suggéré, tout en réduisant le code répétitif! – drwnicc

Répondre

1

Votre code est un peu répétitif. Vous pouvez utiliser un tableau contenant le champ ids:

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

Ensuite, nous pouvons cartographier les champs à leur valeur et utiliser l'opérateur pour remplir les champs non définis:

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

Ce tableau peut alors être réduite à une certaine valeur, par exemple avec mutliplication:

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

Ce code a-t-il été vérifié? Si oui, quelles versions d'Acrobat ont été utilisées? –

+0

@max non, et je ne sais pas –