Probleme mit Dropdowns ein und ausblenden

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
Shepherd
Beiträge: 2
Registriert: 25.05.2012, 13:09

Probleme mit Dropdowns ein und ausblenden

Beitrag von Shepherd » 25.05.2012, 13:43

Hallo zusammen! :)

Ich habe ein Problem im LiveCycle-Designer dem ich einfach nicht auf die Schliche komme:

Ich arbeite aktuell an einer Art "Produkt-Konfigurator-PDF".
Ausgehend von einem ersten Dropdown-Menü erscheinen je nach Auswahl andere Dropdown-Menüs zur Spezifikation der Eigenschaften. Ein erstes Menü fragt also z.B. nach dem gewünschten Modell und macht dann ein Farbauswahl-Menü sichtbar. Dabei wählt "Menü 1" aus 10 versch. Farb-Menüs. (Tatsächlich sind es weit mehr Menüs die sich gegenseitig aktivieren/abschalten).

Die Situation:
M1 (Menü 1) blendet M2 und M3 ein/aus.
M4 blendet M5 ein/aus.

Das Problem:
Sobald eine M1-Wahl getroffen wird, funktioniert das ein/ausblenden bei M4/M5 nicht mehr.

Hier der Skript-Code für M1/exit:
(Mag umständlich sein, aber ich habe im Grunde keine Ahnung von JavaSkript...)
(enthält außerdem eine initialize-Anweisung die ein weiteres Feld zu beginn sichtbar macht.)

if (this.rawValue == 1)
{
// Groessen
gr.tfm_grc.presence = "visible";
gr.tfm_grp.presence = "hidden";
gr.tfm_gsc.presence = "hidden";
gr.tfm_gsp.presence = "hidden";
gr.tfm_gsup.presence = "hidden";
gr.tfm_gbig.presence = "hidden";
gr.tfm_gac.presence = "hidden";
gr.tfm_gap.presence = "hidden";
gr.tfm_gaw.presence = "hidden";
gr.tfm_gbel.presence = "hidden";
gr.tfm_gtos.presence = "hidden";
gr.tfm_void.presence = "hidden";

//Kranz
kranz.presence = "hidden";
}
else
    {gr.tfm_grc.presence = "hidden";
   
    if (this.rawValue == 2)
    {
    // Groessen
    gr.tfm_grp.presence = "visible";
    gr.tfm_gsc.presence = "hidden";
    gr.tfm_gsp.presence = "hidden";
    gr.tfm_gsup.presence = "hidden";
    gr.tfm_gbig.presence = "hidden";
    gr.tfm_gac.presence = "hidden";
    gr.tfm_gap.presence = "hidden";
    gr.tfm_gaw.presence = "hidden";
    gr.tfm_gbel.presence = "hidden";
    gr.tfm_gtos.presence = "hidden";
    gr.tfm_void.presence = "hidden";
   
    //Kranz
    kranz.presence = "visible";
    }   
    else
        {gr.tfm_grp.presence = "hidden";
       
        if (this.rawValue == 3)
        {
        // Groessen
        gr.tfm_gsc.presence = "visible";
        gr.tfm_gsp.presence = "hidden";
        gr.tfm_gsup.presence = "hidden";
        gr.tfm_gbig.presence = "hidden";
        gr.tfm_gac.presence = "hidden";
        gr.tfm_gap.presence = "hidden";
        gr.tfm_gaw.presence = "hidden";
        gr.tfm_gbel.presence = "hidden";
        gr.tfm_gtos.presence = "hidden";
        gr.tfm_void.presence = "hidden";
       
        //Kranz
        kranz.presence = "hidden";
        }       
            else
            {gr.tfm_gsc.presence = "hidden";
           

            if (this.rawValue == 4)
            {
            // Groessen
            gr.tfm_gsp.presence = "visible";
            gr.tfm_gsup.presence = "hidden";
            gr.tfm_gbig.presence = "hidden";
            gr.tfm_gac.presence = "hidden";
            gr.tfm_gap.presence = "hidden";
            gr.tfm_gaw.presence = "hidden";
            gr.tfm_gbel.presence = "hidden";
            gr.tfm_gtos.presence = "hidden";
            gr.tfm_void.presence = "hidden";
           
            //Kranz
            kranz.presence = "visible";
            }           
                else
                {gr.tfm_gsp.presence = "hidden";
               
                if (this.rawValue == 5)
                {
                // Groessen
                gr.tfm_gsup.presence = "visible";
                gr.tfm_gbig.presence = "hidden";
                gr.tfm_gac.presence = "hidden";
                gr.tfm_gap.presence = "hidden";
                gr.tfm_gaw.presence = "hidden";
                gr.tfm_gbel.presence = "hidden";
                gr.tfm_gtos.presence = "hidden";
                gr.tfm_void.presence = "hidden";
               
                //Kranz
                kranz.presence = "visible";
}
                    else
                    {gr.tfm_gsup.presence = "hidden";
                   
                    if (this.rawValue == 6)
                    {
                    // Groessen
                    gr.tfm_gbig.presence = "visible";
                    gr.tfm_gac.presence = "hidden";
                    gr.tfm_gap.presence = "hidden";
                    gr.tfm_gaw.presence = "hidden";
                    gr.tfm_gbel.presence = "hidden";
                    gr.tfm_gtos.presence = "hidden";
                    gr.tfm_void.presence = "hidden";
                   
                    //Kranz
                    kranz.presence = "hidden";
                    }
                        else
                        {gr.tfm_gbig.presence = "hidden";
                       
                        if (this.rawValue == 7)
                        {
                        // Groessen
                        gr.tfm_gac.presence = "visible";
                        gr.tfm_gap.presence = "hidden";
                        gr.tfm_gaw.presence = "hidden";
                        gr.tfm_gbel.presence = "hidden";
                        gr.tfm_gtos.presence = "hidden";
                        gr.tfm_void.presence = "hidden";
                       
                        //Kranz
                        kranz.presence = "hidden";
                        }
                            else
                            {gr.tfm_gac.presence = "hidden";
                           
                            if (this.rawValue == 8)
                            {
                            // Groessen
                            gr.tfm_gap.presence = "visible";
                            gr.tfm_gaw.presence = "hidden";
                            gr.tfm_gbel.presence = "hidden";
                            gr.tfm_gtos.presence = "hidden";
                            gr.tfm_void.presence = "hidden";
                           
                            //Kranz
                            kranz.presence = "visible";
                            }
                                else
                                {gr.tfm_gap.presence = "hidden";
                               
                                if (this.rawValue == 9)
                                {
                                // Groessen
                                gr.tfm_gaw.presence = "visible";
                                gr.tfm_gbel.presence = "hidden";
                                gr.tfm_gtos.presence = "hidden";
                                gr.tfm_void.presence = "hidden";
                               
                                //Kranz
                                kranz.presence = "hidden";
                                }
                                    else
                                    {gr.tfm_gaw.presence = "hidden";
                                   
                                    if (this.rawValue == 10)
                                    {
                                    // Groessen
                                    gr.tfm_gbel.presence = "visible";
                                    gr.tfm_gtos.presence = "hidden";
                                    gr.tfm_void.presence = "hidden";
                                   
                                    //Kranz
                                    kranz.presence = "visible";
                                    }
                                        else
                                        {gr.tfm_gbel.presence = "hidden";
                                       
                                        if (this.rawValue == 11)
                                        {
                                        // Groessen
                                        gr.tfm_gtos.presence = "visible";
                                        gr.tfm_void.presence = "hidden";
                                       
                                        //Kranz
                                        kranz.presence = "hidden";
                                        }
                                            else
                                            {gr.tfm_gtos.presence = "hidden";
                                            gr.tfm_void.presence = "visible";
                                            }}}}}}}}}}}

Hier der Code für M4:

if (this.rawValue == 5)
{tfm_ral.tfm_farbe.presence = "visible";}
else
{tfm_ral.tfm_farbe.presence = "hidden";}


Und hier noch was zur Hierarchie:

--TF
----M1
----TF2
------M2
----TF3
------M3
----TF4
------M4
--------TF5
----------M5

So, wer bis hier her kommt, dem Danke ich schonmal fürs lesen, und hoffe/freue mich auf eine Antwort! ;)

Shepherd

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Probleme mit Dropdowns ein und ausblenden

Beitrag von armine » 29.05.2012, 21:47

Hallo Shepherd,

beim Lesen deines Codes haben sich wohl viele wegen der Augenkrebsgefahr oder aufkommenden Schwindelgefühls abgewandt. Warum lädst du nicht einfach dein PDF hoch?

Schau dir mal mein Machwerk an, vielleicht kommst du dann auf bessere Ideen.

Gruß
armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Probleme mit Dropdowns ein und ausblenden

Beitrag von Merklin » 29.05.2012, 22:01

Hallo Shepherd,

auch ich, habe jetzt mehrmals deinen Beitrag gelesen und konnte nicht wirklich etwas damit anfangen. Da schließe ich mich armine an.

Versuche doch noch einmal etwas genauer dein Problem, anstatt deines Codes hier auf zu listen, zu beschreiben.

Oder lad einfach ein einfaches Beispiel hoch.

VG Merklin

Shepherd
Beiträge: 2
Registriert: 25.05.2012, 13:09

Probleme mit Dropdowns ein und ausblenden

Beitrag von Shepherd » 30.05.2012, 13:35

Danke für die Antworten!

Habe das Problem inzwischen umgangen durch den Actionbuilder. So eine Funktion hab ich von Anfang an gesucht aber irgendwie nicht im Programm gefunden.

Weiß aber trotzdem nicht wodurch das Problem ursprünglich verursacht wurde. Nochmal konkreter:
Wenn eine Auswahl in Menü 1 getroffen wird, funktioniert die Javaskript-Anweisung von Menü 4 nicht mehr (und Menü 5 bleibt deshalb unsichtbar).
Wählt man in Menü 4 einen Wert bevor man eine Auswahl in Menü 1 trifft, dann funktioniert JS. Sobald danach aber wieder Menü 1 betätigt wird nicht mehr...

Leider habe ich die PDF-Version mit dem JS inzwischen nicht mehr und kann sie deshalb nicht hochladen. Aber wie gesagt, Problem ist zumindest umgangen wenn auch nicht gelöst...

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Probleme mit Dropdowns ein und ausblenden

Beitrag von nele_sonntag » 30.05.2012, 14:30

Hallo Sheperd,

um mit DropDowns zu arbeiten und die jeweilge ausgewählte Option dafür zu benutzen, etwas anderes auszulösen, ist es immer sinnvoller im CHANGE-Event den aktuellen ausgewählten Wert weiter zu verarbeiten. Dieser wird mit xfa.event.newText angesprochen. Denn hier wird der Wert zur Laufzeit ausgelesen, bei den anderen mit Verzögerung. Siehe auch den Beitrag von radzmar (http://acronaut.de/view_topic.php?id=3433&forum_id=18&highlight=xfa.event.newText Geschrieben: 9 Mai 2012 16:03)

Code: Alles auswählen

"...Die rawValue-Eigenschaft wird erst beim Verlassen eines Feldes  zugewiesen, existiert somit bei change Event noch nicht. Verwende  anstelle von "this.rawValue" die Methode "xfa.event.newText" im change  Event, dann sollte es klappen...."
Etwas übersichtlicher gerät dann Deine doch recht große Anfrage, wenn Du hierfür  eine Switch-Abfrage benutzt.

Schaue Dir doch mal folgenden Beispiel an:

Code: Alles auswählen

switch(xfa.event.newText)
{
case "1":
dropdown1.presence = "visible";
break;

case "2":
dropdown2.presence = "hidden";
break;

//usw.
}
Die CASE-Blöcke sind beliebig erweiterbar. und natürlich auch die Befehle innerhalb der Case-Blöcke. Du kannst so viel ein-/ausblenden wie Du möchtest oder ...

LG Mandy


Antworten