Ankündigung

Einklappen
Keine Ankündigung bisher.

Mit If else / wenn dann Felder ausblenden

Einklappen
X

Mit If else / wenn dann Felder ausblenden

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Mit If else / wenn dann Felder ausblenden

    Hallo zusammen,

    wer kann mir denn sagen, wie ich mit der bedingten Anzeige eine Gruppe ausblende?
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Intrexx 1.png
Ansichten: 112
Größe: 420,9 KB
ID: 12581
    Der Bibliothekseintrag dazu hilft mir leider nicht.

    Ich habe vor der Gruppe eine Checkbox vorgelagert, wenn diese FALSE ist, soll die nachfolgende Gruppe ausgeblendet werden. Wenn die Chekbox auf TRUE gesetzt wird, soll die Gruppe mit Setzen des Haken automatisch eingeblendet werden. Das ganze wird in einer Eingabemaske verwendet, die nicht alle möglichen Optionen beim Start eingeblendet haben soll, um diese übersichtlicher zu gestalten. Erst wenn bestimmte Felder/Checkboxen aktiv sind, sollen die Optionen zur weiteren Auswahl erscheinen.

    Ein javascript-Code gehört an der stelle ja wohl nicht rein? Da schauen die if/else Bedingungen etwas anders aus?

    Danke vorab!

  • #2
    Hallo Matthias,

    da gibt es mehrere Wege.

    Du kannst, wie in deiner Abbildung, die Gruppe über die Bedingte Anzeige ausblenden.
    Hierfür musst du dir den aktuellen Wert der Checkbox mit $DC.getValueHolder('checkcontrol435...C7).getValue () holen.
    Diesen Wert vergleichtst du dann in der If-Abfrage.
    Ein Beispiel-Code könnte wie folgt aussehen:
    #set($show_simplegroup45..09 = false)
    #set($checkbox = $DC.getValueHolder('checkcontrol435...C7').getValu e())
    #if(checkbox == true)
    #set($show_simplegroup45..09 = true)
    #else
    #set($show_simplegroup45..09 = false)
    #end

    Du kannst auch mit JavaSript arbeiter. Hierfür musst du jQuery anwenden.
    Also Wert der Checkbox holen mit Browser.getValue
    und dann die jQuery ($) anwenden.
    Anschließend mit einer Abfrage die Gruppierung ein oder ausblenden.

    Ein Beispiel-Code könnte wie folgt aussehen:
    function showControl(){
    var checkbox= Browser.getValue(getElement("DE….09"));
    var group= $(getElement("D07…5AE"));

    if(checkbox == true || checkbox == 1){
    group.show();
    else
    group.hide()
    }


    Ich hoffe es hilft dir weiter.

    Kommentar


    • #3
      Guten Morgen Angi,

      schon mal vielen herzlichen Dank für deine Mühen!
      Leider klappt es noch nicht damit. Ich hab mich für die Var. 1 entschieden, weil ich hier besser verstehe, was da eigentlich passiert. Vermutlich mach ich noch was in der Anwendung falsch.

      Hier mal mein Vorgehen im Intrexx-Manager:
      Das ist der Teil der Eingabemaske um den es geht.
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Intrexx 1.png
Ansichten: 79
Größe: 9,3 KB
ID: 12584
      Ein Doppelklick auf die Gruppe "Frühstück" öffnet das Eigenschaftenmenü dazu und darin die "Bedingte Anzeige" mit dem Bearbeitungs-Fenster dafür:
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Intrexx 2.png
Ansichten: 71
Größe: 78,4 KB
ID: 12585

      Ich bekomme jetzt zwar keine Fehlermeldungen mehr, aber im Portal bleibt die Gruppe "Frühstück" ausgeblendet. Auch wenn die Checkbox angehakt wird, tut sich da leider nichts.

      Leider habe ich in den Intrexx-Vorlagen bisher nichts gefunden, wo diese Funktionalität enthalten wäre. Sonst hätte ich mir anhand eines funktionierenden Beispiels anschauen, können, wie es gemacht wurde.

      Frohes Arbeiten!

      Kommentar


      • #4
        Hallo Matthias,

        du kannst in VTL nicht auf Eingabefelder reagieren. Das musst du mit Javascript machen. Das VTL wird nur beim Aufruf der Seite ausgeführt.
        Der oben genannten VTL-Code würde nur funktionieren, wenn das eine Ansichtscheckbox wäre.

        Grüße
        Snixx

        Kommentar


        • #5
          Hallo Snixx,

          danke für das Feedback. Ich habe zwischenzeitlich auch schon diverse Javascript-Varianten probiert. (Ich bin absoluter Anfänger und habe nur ein Grundverständnis von dem was ich tue. Der Rest ist Try&Error und Dr. Google)

          Ich hab jetzt das Skript von Angi für Java verwendet und im Skript-Bereich der Checkbox hinzugefügt. Hatte es auch NUR im Skript für die Gruppe drin, hatte in beiden das Skript drin.
          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Intrexx 1.png Ansichten: 0 Größe: 69,1 KB ID: 12588
          Parallel durchforste ich grad Youtube und zieh mir zahlreiche Videos rein

          UPDATE: Die Konsole im Browser sagt "Uncaught ReferenceError: checkbox is not defined"
          Aber die Variable ist doch definiert?!

          Kommentar


          • #6
            Hallo Matthias,

            keine Sorge jeder fängt mal so an.
            Im JavaScript darfst du nicht mehr die Namen nehmen, sonder die GUID der Eingabefelder (am besten mit dem rechten Mausklick auswählen, achte dabei aufs Semikolon).
            Mach noch beim else das Semikolon weg, dann sollte es eigentlich funktionieren.

            Und dann muss im Reiter Skript der Checkbox ein Onchange mit deiner Funktion rein.

            Hoffe es klappt jetzt

            LG Angi

            Kommentar


            • #7
              Hallo Angi,

              leider immer noch nicht ... Es ist zum Mäuse melken.

              Ich werde jetzt dann bei Intrexx selber nachfragen und hoffen, dass man mir hilft ohne auf die Schulungen zu verweisen. 3.600 € finde ich doch etwas viel für eine Video-Serie in der mich aktuell nur 3-5 Videos interessieren würden. Und dann hab ich noch nicht mal die Sicherheit, dass das darin gezeigte auch wirklich meine Fragen/Probleme löst.

              Frohes Arbeiten!

              Kommentar


              • #8
                Probier mal den Ausschnitt:

                var bewirtung = getElement("GUID12345")

                if (bewirtung.checked == true))
                {
                ...
                }

                Kommentar


                • #9
                  So Problem gelöst - Kleiner Fehler große Ursache. Es hat an einer fehlenden kleinen geschweiften Klammer gelegen.
                  Hier nun also für alle zur Info wie die Einstellungen sein müssen, damit es funktioniert.

                  Ziel:
                  Die Gruppe mit den Detailangaben zum "Frühstück" soll in der Eingabemaske nicht sichtbar und abgefragt sein, solange die Checkbox "Bewirtung" nicht angewählt wurde.
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Intrexx 1.png
Ansichten: 77
Größe: 14,1 KB
ID: 12594
                  Lösung:
                  Im Portalmanager einen Doppelklick auf die Checkbox "Bewirtung" und im Reiter Skript das Icon "geschweiften Klammern" anklicken, um in den JavaScript Bereich zu kommen.
                  Dort den Code wie im Bild eingeben. Die langen roten Passagen, entsprechen der GUID der Checkbox und der Gruppe.
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Intrexx 2.png
Ansichten: 62
Größe: 311,1 KB
ID: 12595

                  Das JavaScript mit "Ok" bestätigen.
                  Dann mit dem "PLUS-Icon" einen neuen Scriptaufruf hinzufügen. In dem o.g. Beispiel also immer dann, die Funktion durchlaufen, wenn die Checkbox an- oder abgewählt wird. Die If-Else-Schleife im Code erkennt ja dann quasi, ob der Haken drin war und jetzt rausgenommen wurde, oder andersrum.
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Intrexx 3.png
Ansichten: 65
Größe: 9,5 KB
ID: 12596

                  Nun die Applikations mit den Änderungen veröffentlichen und im Browser die Seite neu laden.

                  FERTIG.

                  Ich hoffe es ist verständlich für alle Newbies wie mich, die das auch zum ersten Mal machen

                  Haltet die Ohren steif und bleibt gesund!

                  Kommentar


                  • #10
                    Ist zwar schon erledigt: aber wenn es nur um das Ein- und Ausblenden geht, dann würde auch eine Schaltfläche (geeignete Grafik, z.B. Pluszeichen o.ä.) mit der Aktion "Einblenden/Ausblenden" helfen. Dort muss dann nur die Gruppierung anhand des Namens ausgewählt werden. Ganz ohne Programmierung.

                    In der gezeigten Variante hat die Checkbox bei Bewirtung ja keinen zu speichernden Inhalt, wenn in der sich öffnenden Gruppe "Nichts" angekreuzt wird.

                    Kommentar


                    • #11
                      Na so ganz zufrieden bin ich noch nicht. Jetzt sind die Gruppen beim Aufruf der Maske (öffnet sich im Tooltipp) noch eingeblendet. Erst wenn man die zugehörige Chechbox einmal anwählt und dann abwählt, werden die Gruppen ab jeder weiteren Änderung aus-/eingeblendet.

                      Mir fehlt also noch die Funktion, dass die Gruppen per Default beim ersten Aufruf des Eingabe-Tooltipps noch ausgeblendet sind. Meine Recherchen/Trial&Error gehen gerade in Richtung Velocity (das ist doch für den Seitenstart?!), oder irgendwie im JavaScript. Allerdings habe ich noch nicht gefunden, wo ich das Event "onload" hinterlegen könnte.

                      Kommentar


                      • #12
                        In den Eigenschaften der Seite selber gibt es auch einen Skript-Reiter. Dort kannst Du die Funktion für das Event onload hinzufügen.

                        Kommentar


                        • #13
                          cdarnedde Spitze, vielen Dank das war's! Ich wusste, dass ich das irgendwann mal irgendwo gesehen habe.

                          Mein Skript dazu sieht nun wie folgt aus:

                          function Gruppe_onload_ausblenden(){
                          var group= $(getElement("GUID"));
                          var group2= $(getElement("GUID"));
                          group.hide()
                          group2.hide()
                          }

                          GUID natürlich entsprechend ersetzen.

                          Kommentar


                          • #14
                            Ich kenne den Anwendungsfall nicht, aber vergiss im Zweifel nicht, dass der Datensatz ja auch mit gesetzten Checkbox aufgerufen werden kann. Sprich bei Bearbeitung vorhandener Datensätze. Eigentlich müsste beim onload daher dasselbe passieren wie beim Klicken. Wenn Du - wie in deinem neuen Skript- zwei Gruppen mit zwei Funktionen hast, kann Du diese auch beide im onload aufrufen.

                            Kommentar

                            Lädt...
                            X