Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Javascript in Acrobat verhält sich "komisch"

tomtom69

Nicht mehr ganz neu hier

Guten Abend zusammen,

ich hätte hier ein Kuriosum für euch, an dem ich grad verzweifele!

Ich habe unten stehendes Validierungsscript für ein Formularfeld in Acrobat geschrieben. Dieses hat zum Ziel, dass aus einem eingetragenen Wert der KG Preis bzw. vice-versa der Gesamtpreis errechnet wird (falls eine Veränderung eintritt). Der Aufruf erfolgt über die Feldvalidierung nach Eingabe des Wertes (Preises). Ich habe den Code in einem Reintexteditor geschrieben und per CuP in Acrobat eingefügt.

Ich hatte diverse male folgende Fehlermeldung:

SyntaxError: missing } in compound statement


Tatsächlich war aber keine fehlende Klammer zu sehen. Also bin ich nach dem Ausschlussverfahren vorgegangen und habe leere Zeilen gelöscht .. und siehe da, irgendwann hat es keine Fehlermeldung mehr gegeben! Dann habe ich 2 Variablenwerte geändert (Zahlen) und direkt kam wieder die gleiche Fehlermeldung.

Ich bin mir auch sicher, dass man das am Ende eleganter lösen könnte, bin aber nicht der riesen Programmierprofi und erstmal geht es um reines Funktionieren ;-)

Code:
//---------V0.7.0.sortiment---------------
//Variablen initialisieren
//kg-Preis (Standard) zwischenspeichern
var nameFeldKg = this.getField("kg_4031707").name;
console.println("Name kg-Feld = " + nameFeldKg);
var kgIni = this.getField(nameFeldKg).value;
console.println("Default-Preis (kgIni) = " + kgIni);
//Gesamt-Preis (Standard) zwischenspeichern
var nameFeldGesamt = nameFeldKg.replace("kg_","");
console.println("Name Gesamt-Feld = " + nameFeldGesamt);
var gesamtIni = this.getField(nameFeldGesamt).value;
console.println("Default-Gesamt-Preis (gesamtIni) = " + gesamtIni);

//Verpackungseinheit in g
var VE = 1000;
//Anzahl Verpackungen
var AnzVE = 8;
//Preis pro Gramm
var gPreis = 0;
//Faktor (Menge g für Gesamtpreis) --- Faktor = AnzVE * VE / 1000
//var fak = 0;
var fak = AnzVE * VE / 1000;
//Gesamtpreis aus neuem eingetragenem kg-Preis
var gesamtNeu = 0;
//kg-Preis aus neuem eingetragenem Gesamt-Preis
var kgNeu = 0;
//Gesamtgram
var gGesamt = AnzVE * VE;

//RegExp für Euro-Zeichen-Check
var euro = /[€]/;

if(event.target.name == nameFeldKg) {
    console.println("Eingabe in KG Feld: " + nameFeldKg);

    var kgEingabe = event.value;

    //wenn kg-Preis anders als Ini, dann mit neuem Wert faktorisieren und auf gesamt übertragen für Feld gesamtpreis nachher vice-versa
    if(kgEingabe != kgIni) {
        //die Zahl vom Eurozeichen trennen
        kgEingabe = kgEingabe.replace("€ ","");
        //komma durch Punkt ersetzen für parseFloat
        kgEingabe = kgEingabe.replace(",",".");
        var kgPreis = parseFloat(kgEingabe).toFixed(2);
        console.println("kg-Preis = " + kgPreis);

        //Gesamtpreis aus eingetragenem kg-Preis errechnen
        gesamtNeu = kgPreis * fak;
        gesamtNeu = parseFloat(gesamtNeu).toFixed(2);
        gesamtNeu = gesamtNeu.replace(".",",");
        gesamtNeu = "€ " + gesamtNeu;
        console.println("Neuer Gesamt-Preis="+gesamtNeu);
        
        this.getField(nameFeldGesamt).value = gesamtNeu;
        
        //wenn das Euro-Zeichen fehlt, dann ergänzen
        if(euro.test(event.value) == false) {
            event.value = "€ " + event.value;
            console.println("kein Euro");
        };
    };
};

if(event.target.name == nameFeldGesamt) {
    console.println("Eingabe in Gesamt Feld: " + nameFeldGesamt);

    var gesamtEingabe = event.value;

    //wenn Gesamt-Preis anders als Ini, dann mit neuem Wert verrechnen und auf kg übertragen für Feld kg-preis
    if(gesamtEingabe != gesamtIni) {
        //die Zahl vom Eurozeichen trennen
        gesamtEingabe = gesamtEingabe.replace("€ ","");
        //komma durch Punkt ersetzen für parseFloat
        gesamtEingabe = gesamtEingabe.replace(",",".");
        var gesamtPreis = parseFloat(gesamtEingabe).toFixed(2);
        console.println("Gesamt-Preis = " + gesamtPreis);

        //kg-preis aus eingetragenem Gesamt-Preis errechnen
        gPreis = gesamtPreis / gGesamt;
        console.println("Gramm-Preis = " + gPreis);
        kgNeu =  gPreis * 1000;
        kgNeu = parseFloat(kgNeu).toFixed(2);
        kgNeu = kgNeu.replace(".",",");
        kgNeu = "€ " + kgNeu;
        console.println("Neuer kg-Preis="+ kgNeu);
        
        this.getField(nameFeldKg).value = kgNeu;
        
        //wenn das Euro-Zeichen fehlt, dann ergänzen
        if(euro.test(event.value) == false) {
            event.value = "€ " + event.value;
            console.println("kein Euro");
        };
    };
}


Ich stehe auf dem Schlauch - findet einer den Fehler?

Danke und sonnige Grüße,

Tom
 

Design & Layout

helge07

Aktives Mitglied

1. Der angegebene Code ist syntaktisch korrekt:
Ich ein Testformular mit den im Code angegebenen Feldern gebaut und das Validierungsskript drangehängt: Es werden keine syntaktischen Fehler gemeldet das Skript läuft bei mir, die Meldungen kann man im Debugger sehen. Ob die Programmlogik korrekt ist habe ich nicht überprüft.

Meine Vermutung ist, dass bei der Übergabe vom "Reintexteditor" per Clipboard Zeichen fehlerhaft übertragen wurden. Ich habe die letzte schließende Klammer im Verdacht, da die wohl genau am Ende der Datei steht.

Ich habe Acrobat so konfiguriert, dass er als externen Editor 'Notepad' benutzt ( --> Einstellingen --> JavaScript ) . Der Acrobat-interne Editor ist also nicht im Spiel.
 

tomtom69

Nicht mehr ganz neu hier

Moin,

danke für die Antwort. Es hat leider nichts gebracht. Ich habe mehrere mögliche Editoren ausprobiert und jedes mal crasht Acrobat. Ich habe das Script auch Buchstabe für buchstabe noch mal in den Acrobat-editor eingegeben.

Der Fehler besteht weiterhin und treibt mich, gelinde gesagt, in den Wahnsinn!

Ich konnte es soweit eingrenzen, dass es wohl irgendwas mit dem zweiten if-Statement zu tun haben muss. Solange ich das erste if-Statement alleine stehen lasse ist alles gut. Füge ich ein Zweites darunter hinzu (das gleiche gilt übrigens auch für elseif), kommt o.g. Fehlermeldung. Es liegt auch nicht an meinem Code im if-Statement ... die Fehlermeldung kommt auch, wenn ich ein ganz simples if-Statement reinschreibe.

Edit: Im Anhang zwei Screenshots von eben ... Die Fehlermeldungen variieren. Wenn ich das simple if-Statement oder den alert-Aufruf lösche ist alles gut.

Hat jemand noch eine Idee, wie ich das lösen könnte?

Vielen Dank im voraus,

Tom




P.S. Ich habe als weiteren Lösungsansatz das Script als Dokumentfunktion eingetragen, macht aber keinen Unterschied.
 
Zuletzt bearbeitet:

tomtom69

Nicht mehr ganz neu hier

Danke, das werde ich versuchen!

Allerdings würde mich schon eine Erklärung für dieses äußerst komische Verhalten interessieren ;-)

Update: hat leider auch nicht funktioniert!
 
Zuletzt bearbeitet:

tomtom69

Nicht mehr ganz neu hier

Ich habe mir grad mal den Spaß gemacht und einfach einfache if-Statements untereinander gehangen und entsprechend geschaut, was denn so passiert. Ab dem letzten hinzugefügtem kam wieder eine Fehlermeldung. Vorher bei keinem - alle via CuP einzeln Stück für Stück eingefügt und überprüft.

Ich bin ratlos und für jeden Lösungsansatz oder gar einen Workaround dankbar!

Sonnige Grüße,

Tom
 

tomtom69

Nicht mehr ganz neu hier

Leider war die Installationsvariante doch nicht erfolgreich (s.u.).

Der Fehler liegt wohl im Acrobat für Mac und ist bekannt (https://forums.adobe.com/thread/1019415)
Für alle, die auch mal vor diesem Problem stehen: Ich habe den JS-Code einfach komprimiert und siehe da ... alles gut :)

Anmerkung zu unten stehendem: es hat zum Einfügen des Scriptes gelangt, wenn aber was geändert wurde, sind wieder kreative Fehlermeldungen gekommen.
Hi Helge07,

auf diese Idee wäre ich wahrscheinlich erst nach Tagen voller Verzweifelung gekommen!

Das war's ... jetzt nimmt Acrobat das Script ohne zu murren! :)

Vielen Dank für die Hilfe und sonnige Grüße,

Tom
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.633
Beiträge
1.538.446
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben