doschdn
Goto Top

Acrobat und Fragen zu JavaScript

Hallo,

ich habe eine Frage bezüglich Acrobat Pro 2017 und JavaScript.

Ich möchte in einem Formular mehrere Werte berechnen lassen. Ich habe hierfür jeweils in dem Benutzerdefinierten Berechnungsscript folgende Code eingegeben.

Feld 1:
var a = this.getField("Arbeitszeit_1_Mitarbeiter1");
var b = this.getField("Arbeitszeit_2_Mitarbeiter1");
var c = this.getField("Arbeitszeit_3_Mitarbeiter1");
var d = this.getField("Arbeitszeit_4_Mitarbeiter1");
var e = this.getField("Arbeitszeit_5_Mitarbeiter1");
if( a.value ){event.value = a.value + b.value + c.value + d.value + e.value; } else {
event.value = "";}

Feld 2:
var a = this.getField("Regie_1_Mitarbeiter1");
var b = this.getField("Regie_2_Mitarbeiter1");
var c = this.getField("Regie_3_Mitarbeiter1");
var d = this.getField("Regie_4_Mitarbeiter1");
var e = this.getField("Regie_5_Mitarbeiter1");
if(a.value)
{event.value = a.value + b.value + c.value + d.value + e.value;
} else { event.value = ""; }

Es soll dann auch noch Feld 2 falls Werte vorhanden sind von Feld 1 abgezogen werden. Dafür habe ich folgendes eingegeben.
Feld 3:
var a = this.getField("Gesamtarbeitszeit_Mitarbeiter1");
var b = this.getField("Regie-Gesamt_Mitarbeiter1");
if( b.value ){event.value = a.value - b.value; } else {
event.value = "";}

Jetzt habe ich folgende Probleme.
Wenn z.B. das Feld Arbeitszeit_3_Mitarbeiter1 nicht gefüllt ist, wird im Feld 1 der Wert nicht vollständig zusammengezählt sondern der Wert aus a + b zusammen gezählt und die Werte von d und e dahintergeschrieben.

Ebenso ist es im Feld 2.

Es soll in den Berechnungsfeldern wenn nichts eingegeben ist nicht die 0,00 auftauchen, da die Formulare auch hin und wieder gedruckt und manuell ausgefüllt werden.

Kann mir jemand hierfür eine Optimierung geben oder zeigen wo ich diesbezüglich ein Beispiel finde um die Funktion mehr zu verstehen. Stehe damit noch ziemlich am Anfang.

Vielen Dank.

Content-ID: 665998

Url: https://administrator.de/forum/acrobat-und-fragen-zu-javascript-665998.html

Ausgedruckt am: 23.12.2024 um 16:12 Uhr

148121
Lösung 148121 22.04.2021 aktualisiert um 10:05:29 Uhr
Goto Top
Wenn z.B. das Feld Arbeitszeit_3_Mitarbeiter1 nicht gefüllt ist, wird im Feld 1 der Wert nicht vollständig zusammengezählt sondern der Wert aus a + b zusammen gezählt und die Werte von d und e dahintergeschrieben.
Das ist ja klar weil man einen leeren String nicht addieren kann kommt es dann zu einer Exception oder im schlimmsten Fall einer Umwandlung aller Zahlen in einen String und das führt dann zu einem falschen Ergebnis.
Prüfe die Felder auf korrekte Zahlenwerte und füge nur diese zur Summe hinzu... Geht effektiver gleich über ein Array der Feldnamen
var fields = ["Arbeitszeit_1_Mitarbeiter1","Arbeitszeit_2_Mitarbeiter1","Arbeitszeit_3_Mitarbeiter1","Arbeitszeit_5_Mitarbeiter1","Arbeitszeit_2_Mitarbeiter1"];  
var sum = 0;
for (i = 0;i < fields.length; i++){
    var value = parseFloat(this.getField(fields[i]).value);
    if (!isNaN(value)){
        sum += value;
    } 
}
event.value = (sum == 0) ? "" : sum;  

Gruß w.
Doschdn
Doschdn 23.04.2021 um 11:59:31 Uhr
Goto Top
Vielen Dank. Das war die Lösung. Jetzt weiß ich auch in welchen Teil ich mich weiter einlesen muss.