yan2021
Goto Top

Wenn-Dann Berechnung mit JavaScript für PDF-Dokument

Hallo,

ich habe eine Word-Datei zu einem ausfüllbaren PDF-Dokument umgewandelt.
Das hat sehr gut funktioniert.

Nun habe ich jedoch 2 Felder, über die eine Berechnung geschehen soll:

1) Das Feld "Menge"
2) Das Feld "Summe"

Wenn im Feld "Menge" eine 1 steht, dann soll im Feld "Summe" = 60 € eingetragen werden.
Wenn im Feld "Menge" eine 2 steht, dann soll im Feld "Summe" = 90 € eingetragen werden.
Wenn im Feld "Menge" eine 3 steht, dann soll im Feld "Summe" = 120 € eingetragen werden.
Wenn im Feld "Menge" eine 4 steht, dann soll im Feld "Summe" = 150 € eingetragen werden.
Wenn im Feld "Menge" eine 5 steht, dann soll im Feld "Summe" = 180 € eingetragen werden.
Wenn im Feld "Menge" eine 6 steht, dann soll im Feld "Summe" = 210 € eingetragen werden.
Wenn im Feld "Menge" eine 7 steht, dann soll im Feld "Summe" = 240 € eingetragen werden.

Das läuft in Adobe über die "Textfeld-Eigenschaften" und dort über den Reiter "Berechnung".
Dort kann ich ein Berechnungs-Script eingeben.

Beispiel:
Für eine MwSt.-Berechnung mit 19% lautet das Script

event.value = parseFloat(this.getField('netto').value) * 1.19;  

Könnt Ihr mir mit einem kleinen Script hier weiterhelfen?

Grüße,
Yan face-wink

Content-ID: 73254524128

Url: https://administrator.de/contentid/73254524128

Ausgedruckt am: 21.11.2024 um 17:11 Uhr

13910172396
13910172396 25.07.2024 aktualisiert um 14:52:17 Uhr
Goto Top
var startvalue = 60;
var menge = parseInt(this.getField("Menge").value);   
if (menge >= 1 && menge <= 7){
    event.value = startvalue+((menge-1)*30);
}
Strods
Yan2021
Yan2021 25.07.2024 aktualisiert um 15:09:23 Uhr
Goto Top
Hallo und danke für die schnelle Umsetzung.

Ich habe das jetzt mal so eingegeben, aber erhalte die folgende Fehlermeldung:

"der eingegebene Wert stimmt nicht mit dem Format des Feldes überein. [Summe]"

Das Format des Feldes "Summe" ist aber korrekt. Dort ist "Zahlen" ausgewählt mit 1000-er Trennzeichen, Euro-Zeichen und dass das €-Zeichen am Ende mit Leerzeichen stehen soll.

Hast Du dazu noch eine Idee?

oh, ich sehe gerade, dass Du noch eine Änderung am Code vorgenommen hast. Vielleicht geht es ja damit... <<

Grüße von
Yan face-wink
Yan2021
Yan2021 25.07.2024 um 15:16:40 Uhr
Goto Top
...hat jetzt mit dem veränderten Code funktioniert.

Weiß Jemand vielleicht, was man tun kann, wenn man nun eine Eingabe im Feld "Menge" gemacht hat... dann im Feld "Summe" ein Ergebnis sieht, was man aber wieder komplett löschen will?

Ich kann zwar die Summe ändern, aber sie nicht mehr löschen.

Grüße von
Yan face-wink
13910172396
13910172396 25.07.2024 aktualisiert um 15:34:36 Uhr
Goto Top
Gibt viele Wege nach Rom. Z.B. deine Bedingungen hinzufügen wann berechnet wird und wann nicht ... Wenn leer dann eben Wert nicht mehr berechnen lassen dann bleibt das Feld leer.
var startvalue = 60;
var menge = parseInt(this.getField("Menge").value);     
if (menge >= 1 && menge <= 7 && event.value != ""){  
    event.value = startvalue+((menge-1)*30);
}

Wäre vielleicht erst mal Zeit für einen JavaScript Grundkurs
https://www.w3schools.com/js/

Bitte dann Beitrag schließen. Die eigentliche Frage wurde ja erledigt.
Yan2021
Yan2021 25.07.2024 um 15:48:08 Uhr
Goto Top
Danke Dir...

Ich brauche das tatsächlich nur für dieses eine Formular. Daher wäre ein JS-Grundkurs vielleicht etwas zu viel des Guten. Außerdem tue ich mich schwer mit Programmierung, da das überhaupt nicht mein Gebiet ist.

Aber...
Ich habe Deinen Code jetzt um den Teil >> && event.value != ""
ergänzt, damit nur berechnet wird, wenn im Feld "Menge" etwas drin steht.

Nun standen ja leider schon Summen drin von den vorherigen Versuchen und die bekomme ich nicht mehr raus.
Das hat dann wohl eher mit Adobe zu tun, als mit JavaScript... obwohl ich da natürlich auch nicht sicher bin face-smile

Hast Du dazu noch ne Idee?
Wie bekomme ich die Einträge aus den Summenfeldern wieder raus?

Grüße von
Yan face-wink
13910172396
13910172396 25.07.2024 aktualisiert um 15:57:47 Uhr
Goto Top
damit nur berechnet wird, wenn im Feld "Menge" etwas drin steht.
Nein das besagt genau was anderes , nämlich dass wenn du das Feld Summe von Hand komplett löschst es nicht mehr berechnet wird ..
Hast Du dazu noch ne Idee?
Ich habe zu vielem Ideen, das ist aber nicht mehr die eigentliche Frage des Threads deswegen bin auch raus, auf ein Multi-Frage-Antwort Spiel mit Umgebungsbedingungen die man sich herdichten muss habe ich ehrlich gesagt keine Böcke ...
Good luck
Yan2021
Yan2021 25.07.2024 aktualisiert um 15:59:11 Uhr
Goto Top
OK, ich habe verstanden.

Das Problem ist nur, dass die Summenfelder alle in den Eigenschaften mit "Schreibgeschützt" versehen sind.
Ich werde jetzt mal den Schreibschutz in allen Feldern rausnehmen, dann die Inhalte löschen und dann den Schreibschutz wieder setzen.

Dann habe ich jedenfalls wieder eine Tabelle mit grds. leeren Summenfeldern.

Aber gibt es denn auch die Möglichkeit, dass das Summenfeld gelöscht wird, wenn man im Feld Menge den Eintrag löscht?

Das wäre die perfekte Lösung für den Fall eines schreibgeschützten Ergebnisfeldes.

oh, ich lese Deinen Rest erst jetzt. Ja, sorry, aber ich konnte ja vorher nicht wissen, dass die Werte im Summenfeld nicht mehr entfernbar sind...

Grüße von
Yan face-wink
13910172396
Lösung 13910172396 25.07.2024, aktualisiert am 26.07.2024 um 09:56:17 Uhr
Goto Top
Aber gibt es denn auch die Möglichkeit, dass das Summenfeld gelöscht wird, wenn man im Feld Menge den Eintrag löscht?
Klar, einfach nichts zurückgeben oder das Feld Summe auf 0 setzen wenn menge = 0 oder "" je nachdem was bei dir drin steht.
Beispiel wenn Menge > 0 = Werte setzen, ansonsten Summe = 0
var startvalue = 60;
var menge = parseInt(this.getField("Menge").value);     
event.value = (menge >= 1 && menge <= 7) ? startvalue+((menge-1)*30) : "";  

screenshot

Wie kann ich einen Beitrag als gelöst markieren?
Yan2021
Yan2021 25.07.2024 um 16:19:21 Uhr
Goto Top
OK und danke.

Es wäre zwar toll gewesen, wenn nicht Menge "0" sondern wenn einfach nix im Feld steht, denn eigentlich soll dort auch keine Null stehen.

Aber vielleicht muss ich dazu die letzte "0" einfach durch "" ersetzen...?

Grüße von
Yan face-wink
Yan2021
Yan2021 25.07.2024 aktualisiert um 16:25:46 Uhr
Goto Top
Hat sogar funktioniert mit den beiden Anführungsstrichen ""
Jetzt wird in "Summe" jeder Eintrag gelöscht, wenn ich im Feld "Menge" einfach NICHTS eintrage oder den vorhandenen Eintrag lösche. Genau so sollte es sein.

Hier mein jetziger Code:

var startvalue = 60;
var menge = parseInt(this.getField("Menge").value);       
event.value = (menge >= 1 && menge <= 7) ? startvalue+((menge-1)*30) : "";  

Danke für Deine super Hilfe face-wink

Grüße von
Yan face-wink
13910172396
13910172396 25.07.2024 um 17:08:14 Uhr
Goto Top
Yan2021
Yan2021 26.07.2024 um 09:31:52 Uhr
Goto Top
Hallo nochmal,

ich habe nochmal eine kurze - wahrscheinlich einfach zu beantwortende Frage zum Thema:

Und zwar habe ich im Gesamt-Summen-Feld das Format "Zahlen" eingetragen (mit Tausender-Trennzeichen und €-Symbol). Nun steht dort automatisch immer 0,00 €

Dort soll aber nichts stehen, wenn in den oberen Summen-Feldern noch nichts eingetragen wurde.
Was könnte ich in diesem Gesamt-Summen-Feld eintragen, um das so umzusetzen?

Grüße von
Yan face-wink
13910172396
13910172396 26.07.2024 aktualisiert um 10:02:55 Uhr
Goto Top
Ich sachs ja, das nimmt kein Ende ... kleiner Finger ganze Hand ....

var summe = this.getField("SummenFeld1").value + this.getField("SummenFeld2").value;  
event.value = (summe != 0) ? summe : "";  
Sinnvoller wäre das Feld mit JavaScript ganz auszublenden, aber damit fange ich bei dir besser gar nicht erst an ...

Ciao bin jetzt raus.
Yan2021
Yan2021 26.07.2024 aktualisiert um 10:17:32 Uhr
Goto Top
Danke Dir.

In meinem Fall gibt es jedoch nicht nur 1 SummenFeld1, sondern die SummenFelder 1 - 15.
Kannst Du den Code bitte nochmal dementsprechend anpassen... dann bin ich aber auch durch face-wink

In SummenFeld2 soll also nichts stehen, wenn in den SummenFeldern 1 - 15 auch nichts steht.

Grüße von
Yan face-wink
Yan2021
Yan2021 26.07.2024 um 10:26:53 Uhr
Goto Top
...sorry, das geht eh nicht.

Denn unter "Berechnung" habe ich schon mehrere Felder bei "Wert ist" eingegeben, was auch nötig ist.
Wenn ich nun - weiter unten - auf "Benutzerdefiniertes Berechnungsscript" klicke, um den Code dort einzugeben, dann verschwinden die oben bei "Wert ist" eingegebenen Daten.

Daher lasse ich es jetzt halt so mit dem Eintrag "0,00 €".

Danke für die Hilfe. Beitrag ist gelöst.

Grüße von
Yan face-wink