37414
Goto Top

Subtraktion in Javascript für ausfüllbares PDF

Hallo liebe User,

ich habe ein Adobe PDF-Dokument in ein ausfüllbares PDF-Dokument umgewandelt.
Grds. funktioniert alles sehr gut. Auch wenn ich z.B. 2 Felder addieren möchte. Das geht über die Eigenschaften des Feldes, indem man einfach die beiden zu addierenden Felder auswählt.

Nun muss ich jedoch von einem Feld, welches bereits ein Ergebnis enthält, die Inhalte von 2 weiteren Feldern subtrahieren.
Dazu ist jedoch die entsprechende Berechnung mit Javascript nötig.

Eben habe ich mir das mal hier angeschaut:
Rechenoperationen Javascript

Damit komme ich jedoch nicht klar, da ich mit Javascript noch nicht gearbeitet habe.

Hier hänge ich mal einen Screenshot mit den Eigenschaften des Textfeldes an, in dem das Ergebnis der Subtraktion erscheinen soll.

textfeld - eigenschaften

Und hier seht Ihr die Kästchen, wie sie jetzt im Bearbeitungsmodus von Adobe zu sehen sind. Hier sieht man auch die Feldbezeichnungen:

auswahl

Vom Inhalt im Kästchen "Gesamt" soll der Inhalt der beiden Kästchen "undefined_3" und "undefined_3a" abgezogen und dann im Kästchen "undefined_3b" erscheinen.

Vielleicht kann mir ja jemand von Euch weiterhelfen... ist wahrscheinlich nur ein kurzer Code.

Danke und schöne Grüße,
imebro

Content-Key: 607248

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

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: 145916
145916 24.09.2020 aktualisiert um 09:08:30 Uhr
Goto Top
Dafür muss man kein Javascript beherrschen, nur von Grundrechenarten aus der Grundschule sollte man dann doch irgendwann mal gehört haben face-smile

screenshot

Hätte man das gelesen wäre der Fred auch überflüssig gewesen und man hätte die Zeit sinnvoller nutzen können face-wink.
How to do (not so simple) form calculations

Btw. das Benennen der Felder mit sinnvolleren Namen sollte dir auch im Nachhinein beim Interpretieren helfen wenn du mal wieder da ran musst.

Gruß eagle
Mitglied: 37414
37414 24.09.2020 aktualisiert um 09:15:59 Uhr
Goto Top
Danke für die besonders freundliche Belehrung.
Sorry, aber ich finde sowas immer ätzend, wenn man zwar hilft, aber dann solche überflüssigen Kommentare abgibt.

OK... das musste mal (wieder) gesagt werden!

Danke für die Lösung.
Ich habe aber auch selbst soeben eine Lösung gefunden und wollte diese gerade posten.
Sie ist jedoch anders, als die von Dir vorgegebene... nur dass meine funktioniert und Deine nicht: face-smile

event.value=this.getField("undefined_2a").value-this.getField("undefined_3").value-this.getField("undefined_3a").value;

Schöne Grüße,
imebro
Mitglied: 145916
145916 24.09.2020 aktualisiert um 09:25:59 Uhr
Goto Top
Zitat von @37414:
OK... das musste mal (wieder) gesagt werden!
Wenn man voher halt nicht erst mal vernünftig recherchiert muss man mit sowas rechnen.
Sie ist jedoch anders, als die von Dir vorgegebene... nur dass meine funktioniert und Deine nicht: face-smile
Doch geht selbstredend einwandfrei wurde natürlich getestet und kannst du oben im Link auch selbst nachlesen, also verzäll kein Müll! Wenn du deine Felder nicht vernünftig benennst, selbst schuld face-wink.

Na dann noch Haken dran und fertsch.

Gruß eagle
Mitglied: 37414
37414 24.09.2020 um 09:38:53 Uhr
Goto Top
@145916:

Ich würde Dich doch um etwas weniger Aggressivität bitten in Deinen Äußerungen. Ein bisschen Anstand darf in einem Forum schon sein face-wink

Auch ich habe es mit Deinem Code im Original Formular getestet und es funktioniert definitiv nicht.
Mit dem von mir einkopierten Code jedoch funktioniert es.

Und was das Ganze mit der Feldbenennung zu tun haben soll, erschließt sich mir jetzt auch nicht wirklich... face-smile

Danke jedoch für Deine Nachricht.

LG
imebro
Mitglied: eisbein
eisbein 24.09.2020 um 10:11:30 Uhr
Goto Top
Hallo,

Ich würde deine Formel noch duch ein parseFloatergänzen:
event.value=parseFloat(this.getField("undefined_2a").value)-parseFloat(this.getField("undefined_3").value)-parseFloat(this.getField("undefined_3a").value);  

Somit wird aus deinen Eingaben eine "Dezimalzahl" gemacht - quasi eine Gültigkeitsprüfung face-wink
Beispiel: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parsefloat

Es gibt auch parseInt- wenn es nur Ganzzahlen sein dürfen.
Beispiel: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parseint

Gruß
eisbein
Mitglied: 145916
145916 24.09.2020 aktualisiert um 10:16:33 Uhr
Goto Top
Zitat von @37414:
Auch ich habe es mit Deinem Code im Original Formular getestet und es funktioniert definitiv nicht.
Doch das geht definitiv wenn du die Felder natürlich vorher auf das Zahlenformat und nicht auf String stellst! Für eine Umwandlung von Strings siehe natürlich eisbein's Ergänzung, ist aber nicht nötig wenn man die Feldformate schon vorher richtig einstellt.

Falls du es immer noch nicht glaubst => Video-Beweis: https://we.tl/t-ztE4YRNxBL
Mitglied: 37414
37414 25.09.2020 um 09:20:45 Uhr
Goto Top
Danke an Euch nochmal für die weiteren Tipps.

Alle benannten Felder standen bereits auf Zahlenformat. Deshalb verstehe ich auch nicht, warum der ursprüngliche Code von @145916 nicht funktionierte, obwohl es ja offenbar bei ihm so funktioniert hat.

Naja... jetzt funktioniert es ja mit dem von mir einkopierten Code.
Da ich in den Eigenschaften der Felder bereits Dezimalzahlen, bzw. ganze Zahlen ausgewählt hatte, wäre die Erweiterung des Codes jetzt auch überflüssig. Dennoch ein guter Tipp für die Zukunft face-smile

Danke und schöne Grüße,
imebro
Mitglied: 37414
37414 25.09.2020 aktualisiert um 10:00:49 Uhr
Goto Top
Gerade kommt mir noch eine weitere Idee:

Ich gebe in diesem ausfüllbaren PDF Urlaub ein. Also z.B. vom 28.09.2020 - 02.10.2020.
Dann muss ich aber im Feld daneben die Länge in Tagen eingeben... also 5

Gibt es auch eine Möglichkeit, die Länge in Tagen automatisch aus der Zeitspanne berechnen zu lassen?
Das würde es (fast) perfekt machen face-smile

Ich habe zwar schon das hier gefunden - weiß aber nicht, wie ich das in mein Projekt umsetzen soll:
Differenz zwischen zwei Zeitangaben

Ebenso findet sich hier auch eine Lösung, aber... was muss ich in meinem Feld "Tage Urlaub" nun als Code eintragen?
Differenz zwischen zwei Daten

LG
imebro
Mitglied: eisbein
eisbein 25.09.2020 um 10:25:52 Uhr
Goto Top
Da ich in den Eigenschaften der Felder bereits Dezimalzahlen, bzw. ganze Zahlen ausgewählt hatte, wäre die Erweiterung des Codes jetzt auch überflüssig.

Jein!

Es ist im immer besser "Usereingaben" im Code noch einmal zu verifizieren face-wink
Mitglied: 145916
Lösung 145916 25.09.2020 um 10:52:08 Uhr
Goto Top
Kommentare mit Code erspar ich mir diesmal
https://we.tl/t-iuouRWq2ZQ
Fertsch
Mitglied: 37414
37414 25.09.2020 um 10:53:38 Uhr
Goto Top
Ok und danke...

Dann ergänze ich den Code jetzt entsprechend.

Hast Du vielleicht auch ne Idee, wie ich die Differenz zweier Datums-Angaben in Tagen berechne?
Ich habe zwar nun schon ein paar Lösungen gefunden (s.a. meine Links), aber ich weiß nicht, wie ich diese in meinem Formular umsetzen soll.

Z.B. den Urlaub vom 28.09.20 bis 02.10.20.
Die Felder sind "Urlaub_von" und "Urlaub_bis".
Das Feld, wo das Ergebnis in Tagen hin soll (also die Zahl 5) heißt "TageRow1".

Schöne Grüße,
imebro
Mitglied: 37414
37414 25.09.2020 aktualisiert um 10:56:05 Uhr
Goto Top
...

@145916 war schneller.

Danke, werde mir die Datei gleich mal anschauen und bin gespannt face-smile

LG
imebro
Mitglied: 145916
145916 25.09.2020 aktualisiert um 11:27:01 Uhr
Goto Top
Gerade kommt mir noch eine weitere Idee:
Ach ja da kommt mir auch noch eine Idee, kannst du meine Einkäufe heute noch erledigen, hab leider kein Akku mehr ... 🐟?
Mitglied: 37414
37414 25.09.2020 um 11:37:48 Uhr
Goto Top
...kannst es ja nicht lassen face-wink

Aber Dein Code funktioniert sehr gut mit der Berechnung der Tage aus den angegebenen Daten.
Danke dafür...

LG
imebro
Mitglied: 145916
145916 25.09.2020 um 11:43:45 Uhr
Goto Top
...kannst es ja nicht lassen
Du ja auch nicht face-smile.