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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 665998
Url: https://administrator.de/contentid/665998
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
2 Kommentare
Neuester Kommentar
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.