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 ;-)
Ich stehe auf dem Schlauch - findet einer den Fehler?
Danke und sonnige Grüße,
Tom
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