Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 29
Like Tree2Likes

Thema: Prüfen, ob Formularfelder befüllt; wenn-dann...

  1. #1
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    Question Prüfen, ob Formularfelder befüllt; wenn-dann...

    Hallo Zusammen,

    ich suche den Code für ein Formularfeld in Adobe Acrobat.
    Dieses Feld soll bestimmte andere Formularfelder in der PDF-Datei daraufhin überprüfe, OB etwas darin steht oder nicht. Was drin steht ist völlig egal!
    In Excel erfüllt der Befehl "Anzahl2" diese Funktion.

    Daraufhin soll eine Aktion ausgeführt twerden: Leere Zellen werden mit dem Wert "0", befüllte Zellen mit "1" ausgegeben und mit dem Faktor von z.B. 6,5 multipliziert.

    Zur Veranschaulichung: Es ist ein Bestellformular bei dem jedes Feld eine gewünschte Artikelbezeichnung aufnimmt, und in der gefragten Zelle wird dann der Endpreis augegeben. Alle Artikel haben den gleichen Preis, es geht also nur darum zu erfassen, wie viele Artikel bestellt wurden.

    Leider habe ich nicht die blasseste Ahnung weder von Javascript noch von Programmierung im Allgemeinen, aber ich hoffe dass das möglich ist, und dass jemand in der Lage ist, dieses Problem auszuknobeln.

    Vielleicht hilft es ja und ich wecke Euer Erbarmen wenn ich mal ein paar Stichworte in den Raum werfe, die mir irgendwie vielversprechend vorkamen. Leider bin ich nicht in der Lage, daraus einen vernünftigen Code zu bauen.

    "
    • Vergleichsoperation
    • "value" ?
    • "contains" ?
    • "getAttribute()"?
    • "getElementsByTagName()"?



    Die gefragten Zellen (ca. 10 an der Zahl) könnte man wohl über ihren Namen ansprechen ("var"?).
    Angenommen sie heißen "Datei1", "Datei2", usw.

    Wäre toll wenn ihr mir weiter helfen könntet.
    Geändert von Rudelgurke (07-10-2013 um 22:14 Uhr)

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.630

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Hallo Rudelgurke,
    verstehe ich das richtig, dass dir jemand dieses Script komplett fertig schreiben soll?

  3. #3
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Ich bin über jede Hilfe dankbar.
    Wenn es nur ein hinweis ist welche Methoden zur Anwendung kommn sollten oder welche ich schonmal vergessen kann, wäre ich ein Stück weiter.
    Aber vielleicht hat jemand ja schonmal was ähnliches geschrieben was ich aufgreifen und abändern könnte.

    Ich bin nicht in der Lage es von Grund auf selbst zu schreiben, aber ich hatte gehofft es mit etwas Hilfestellung hinzukriegen.

    Was mir eben auch noch nicht so ganz klar ist, welche Teile der Javascript-Syntax ich überhaupt brauche, dadurch das ich mich nicht in offener XML Umbebung befinde sondern in Adobe Acrobat (Testversion XI).
    So muss ich ja zB die abzufragenden Formularfelder nicht generieren, das Dokument oder die Ebene darin nicht annavigieren usw. weil das alles schon vorgegeben ist.
    Verstehe ich das richtig?

    Der Code wird ja in den Eigenschaften eines vorliegenden Formularfelds in Acrobat unter "Berechnung" --> "Benutzerdefiniert" eingefügt.

    An anderen Stellen habe ich es ja schon geschafft, aber da ging es um einfache Berechnungen mit den eingetragenen Werten (Summenbildung), und auch da hatte ich Hilfe.
    Was mir Probleme bereitet ist die Konvertierung von
    "Gefüllt" --> "1"
    "Leer" --> "0"

    Aber auch das Grundverständnis für die Syntax fehlt mir.

    Gruß
    Geändert von Rudelgurke (08-10-2013 um 07:17 Uhr)

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.630

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Davon habe ich auch keine Ahnung. Mir ist auch nicht klar, wie ein solches Script angetriggert wird. Gibt es Eventhandler? Gibt es ein "Absenden" Trigger?
    Ist denn das JS in Acrobat die selbe Syntax wie im Browser?
    Zeig doch mal was du an anderen Stellen schon geschafft hast.

  5. #5
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Zitat Zitat von mikdoe Beitrag anzeigen
    Gibt es Eventhandler? Gibt es ein "Absenden" Trigger?
    Ist denn das JS in Acrobat die selbe Syntax wie im Browser?
    Ich weißt nicht was Eventhandler sind. Ich denke aber das wird alles durch Acrobat gemacht.
    Ich glaube nicht dass JS in Acrobat ganz gleich ist wie im Browser. Ich glaube/hoffe aber dass es einfacher ist, weil viel der umrahmenden Struktur schon vorgegeben ist.

    Zitat Zitat von mikdoe Beitrag anzeigen
    Zeig doch mal was du an anderen Stellen schon geschafft hast.
    Gern.
    Hier erstmal der Bereich um den es geht:

    Bestellung Digital.jpg

    Rechts unten bei "Zwischensumme" soll das Ergebnis erscheinen, was sich aus allen gefüllten Zellen (behandelt wie "1") multipliziert mit einem Einzelpreis, ergibt. Leere Zellen werden als "0" behandelt.

    In einem anderen Bereich sind weitere Scripte am Werk.
    Z.B. in diesem Bereich ("Bestellung von Abzügen"):

    Bestellung Abzuege.PNG

    Zum Beispiel wird in dem Feld ganz links angezeigt, was der Empfänger eingeben muss, wenn das Feld leer ist.
    Der Code sieht so aus:

    Feldname anzeigen wenn leer.PNG

    Die Berechnung von Zwischensummen ganz rechts wird auch durch Javascript umgesetzt:

    Berechnung Anzahl x Einzelpreis.jpg

    Hilft das?
    Geändert von Rudelgurke (08-10-2013 um 11:14 Uhr) Grund: Probleme mit Anhangsverwaltung

  6. #6
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.630

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    OK, damit bist du mir meilenweit voraus, muss ich mich leider ausklinken. Aber interessantes Thema.

  7. #7
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Uff, schade.
    Also ich hab jetzt noch ein bisschen rumgespielt und denke ich habe zumindest einen Ansatz. Aber ganz klappt es noch nicht.
    Vielleicht sieht jemand die Lösung:

    Wenn ich die Berechnung der Zelle "Zwischensumme" ("ZwsumDig") wie folgt anlege:

    Code:
    if (getField("Digital1.0.0").value=="") event.value = "0";
    if (getField("Digital1.0.0").value>"") event.value = "1";
    Dann ist die Welt noch in Ordnung.
    Das Feld "Zwischensumme" zeigt mir eine 0 an, solange das Feld "Digital1.0.0" (ganz links) leer ist.
    Wenn das Feld ausgefüllt wird (egal mit was), dann kommt bei "Zwischensumme" eine 1.

    Nun fehlen mir noch zwei Sachen:

    1. Ich möchte nicht nur ein Feld berücksichtigen, sondern mehrere.
    2. Die Ergebnisse dieser Überprüfungen sollen miteinander addiert und mit einem Faktor (Einzelpreis) multipliziert werden.

    Ich hab das so versucht, aber da kommt nur Quatsch raus:

    Code:
    if (getField("Digital1.0.0").value=="") event.value = "0";
    if (getField("Digital1.0.0").value>"") event.value = "1";
    
    if (getField("Digital1.0.2").value=="") event.value = "0";
    if (getField("Digital1.0.2").value>"") event.value = "1";
    
    if (getField("Digital1.0.4").value=="") event.value = "0";
    if (getField("Digital1.0.4").value>"") event.value = "1";
    
    if (getField("Digital1.0.6").value=="") event.value = "0";
    if (getField("Digital1.0.6").value>"") event.value = "1";
    
    if (getField("Digital1.0.8").value=="") event.value = "0";
    if (getField("Digital1.0.8").value>"") event.value = "1";
    
    if (getField("Digital1.0.10").value=="") event.value = "0";
    if (getField("Digital1.0.10").value>"") event.value = "1";
    
    if (getField("Digital1.0.12").value=="") event.value = "0";
    if (getField("Digital1.0.12").value>"") event.value = "1";
    
    if (getField("Digital1.0.14").value=="") event.value = "0";
    if (getField("Digital1.0.14").value>"") event.value = "1";
    
    var a=getField("Digital1.0.0").value;
    var b=getField("Digital1.0.2").value;
    var c=getField("Digital1.0.4").value;
    var d=getField("Digital1.0.6").value;
    var e=getField("Digital1.0.8").value;
    var f=getField("Digital1.0.10").value;
    var g=getField("Digital1.0.12").value;
    var h=getField("Digital1.0.14").value;
    
    event.value=a+b+c+d+e+f+g+h*(6,23);
    Allein schon in der Zeichensetzung muss was faul sein, denn mir wird immer nur die Dezimale hinter dem Komma als Ergebnis angezeigt (in dem Fall die 23).
    Abgesehen davon bin ich mir sicher, dass da von der Syntax her auch noch wesentliche Grundlagen im Argen sein dürften.

    Irgendjemand ne Idee?

  8. #8
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Ich halte Euch auf dem Laufenden.

    Die Methode "getField" (die es ja im klassischen Javascript glaube ich gar nicht gibt?) ist grundsätzlich unbrauchbar in meinem Fall, weil dann nicht das Ergebnis der Überprüfung (ob Zelle voll oder leer), sondern der tatsächlich eingetragene Wert geholt wird, was nicht Sinn der Sache ist.
    Code:
    var a=getField("Digital1.0.0").value;
    Kann mir jemand sagen, mit welcher Methode ich das Ergebnis der Überprüfung holen kann?
    Code:
    if (getField("Digital1.0.0").value=="") event.value = "0";
    if (getField("Digital1.0.0").value>"") event.value = "1";
    Ich will also nur die 1 oder die 0 weiter verarbeiten.

    PS: Ich habe mittlerweile auch gemerkt, dass ich bei Dezimalzahlen einen Punkt statt eines Kommas verwenden muss.
    Geändert von Rudelgurke (08-10-2013 um 12:34 Uhr)

  9. #9
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.642

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    versuch mal
    Code:
    var g = 0;
    for (var i=0; i<=14; i+=2)
    {
      if (getField("Digital1.0." + i).value != "") 
      {
        g++;  
      }
    }
    
    event.value=g*6.23;
    Rudelgurke likes this.

  10. #10
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.630

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Mit der Funktion parseInt() könntest du sicherstellen, dass nur nummerische Werte verarbeitet werden.
    Und den Rest würde ich in eine Schleife packen.
    Vorausgesetzt Acrobat JS ist wie Browser JS.

  11. #11
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    @Foren-Gott
    Ich bete Dich an (passend zum Namen )
    Nach diesen paar Zeilen hab ich nun ein paar Tage lang gesucht...

    Es klappt einfach perfekt!

    1000 Dank!!! und auch an Mikdoe für das Engagement!

    Gruß

    PS: Ich könnte mir gut vorstellen, dass an diesem Code viele Leute interessiert sein werden, die bei Excel die Funktion "Anzahl2" genutzt haben.
    Geändert von Rudelgurke (08-10-2013 um 13:05 Uhr) Grund: Ergänzung

  12. #12
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.630

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Zitat Zitat von Rudelgurke Beitrag anzeigen
    @Foren-Gott
    Ich bete Dich an (passend zum Namen )
    Ja, fachlich hat er es voll drauf.

    Zitat Zitat von Rudelgurke Beitrag anzeigen
    und auch an Mikdoe für das Engagement!
    Gern.

  13. #13
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Hallo nochmal,

    nachdem ich gestern hier so gut Hilfe gekriegt habe (ich hab den ganzen Tag diesen Code-Schnipsel mit mir rumgetragen und probiert ihn nachzuvollziehen - so einfach, so genial), probiere ich es nochmal mit einer ähnlich gelagerten Frage.

    Ich habe Probleme mit einem Feld in dem ein Prozentwert ausgerechnet werden soll. Das Problem ist, dass er bestimmte Zellen abfragt, die häufig leer sind, weshalb nicht nur an der Stelle des Prozentwerts ein unschönes "NaN" erscheint, sondern man beim Ausfüllen des Formulars ständig Warnfenster bekommt, dass der eingegebene Wert nicht mit dem Format des Prozent-Feldes übereinstimmt.

    Das fragliche Feld, welches Probleme bereitet, ist das Feld das den Rabatt in Prozent anzeigen soll (RabProz). Es errechnet den Prozentwert aus folgenden Feldern:

    RabattEingabe / (Gesamtsumme - Versandkosten - Auftragsgebühr) * 100

    Jetzt brauche ich einen Code der tolerant demgegenüber ist, dass die abgefragten Felder manchmal leer sind.

    Hier ist mein Ansatz:

    Code:
    (function () {
    
        var v1 = getField("RabEing").value;
        var v2 = getField("Gesa").value;
        var v2 = getField("VerS").value;
        var v2 = getField("AufT").value;
    
        if (RabEing !== 0) {
            event.value = RabEing / (Gesa - VerS - AufT) * 100;
        } else {
            event.value = "";
        }
    
    })();
    Das berücksichtigt aber nur den Fall dass das Rabatt-Eingabefeld leer ist, und nicht die anderen Felder.
    Außerdem bin ich wiedermal unsicher, ob die Syntax korrekt ist.

    Habt Ihr einen Tipp?

  14. #14
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.642

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    die variablen können nicht alle v2 heißen
    wenn du in der berechnung event.value = RabEing / (Gesa - VerS - AufT) * 100; die variablen RabEing, Gesa, VerS, AufT verwendest, musst du die so benennen

    var RabEing = parseFloat(getField("RabEing").value);
    var Gesa = parseFloat(getField("Gesa").value);
    var VerS = parseFloat(getField("VerS").value);
    var AufT = parseFloat(getField("AufT").value);

    du musst dir sinnvolle defaultwerte zulegen, z.b. alles 0;

    RabEing = isNaN(RabEing) ? 0 : RabEing;
    ...

    auf eine division durch 0 solltest du auch noch achten

  15. #15
    Rudelgurke ist offline Jungspund
    registriert
    07-10-2013
    Beiträge
    16

    AW: Prüfen, ob Formularfelder befüllt; wenn-dann...

    Du hast völlig recht, ich hab den aufegriffenen Code nicht sorgfältig angepasst (hier im Foreneintrag). Im Acrobat hatte ich v1, v2, v3 usw.

    Aber Du hast mir weitere Fehler aufgezeigt und ich werd vesuchen es umzusetzen sobald ich wieder zuhause bin.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. wenn dann & sonst
    Von amithedog im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 15-10-2012, 17:00
  2. [php] Formularfelder je nach auswahl einblenden und Prüfen?
    Von ~red~ im Forum Serverseitige Programmierung
    Antworten: 3
    Letzter Beitrag: 17-02-2011, 23:04
  3. Wenn Minuszahl dann rot.
    Von powl0r im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 26-10-2009, 10:05
  4. [JS]Formularfelder auf inhalt prüfen
    Von ancient.shadow im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 08-12-2005, 17:43
  5. Formularfelder auf Existenz prüfen
    Von steven im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 09-03-2002, 10:24

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •