Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert aus Ansichtsfeld für JS If-Abfrage verwenden

Einklappen
X

Wert aus Ansichtsfeld für JS If-Abfrage verwenden

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

  • Wert aus Ansichtsfeld für JS If-Abfrage verwenden

    Hallo liebe Intrexx Community,

    ich stelle mich gerade vermutlich mal wieder ungeschickt an. Ich möchte gerne eine Funktion nur dann ausführen, wenn eine Zahl in einem Ansichtsfeld nicht über einem bestimmten Wert ist (ein Status den wir in Form eines Integers mitführen).

    Nachdem ich mit getElement(GUID).getValue() und getElement(GUID).value schon keinen Erfolg hatte, fand ich diesen alten Thread: https://www.intrexx.com/forum/index....threadID=20887 und verpasste meinem Ansichtsfeld das Expertenattribut "jsobject".

    Dann habe ich getestet, was mir getElement da eigentlich zurück liefert. Ohne das Expertenattribut war das ein HTMLTableCellElement und mit ist es ein HTMLDivElement (Ich hab's mir mal per alert() anzeigen lassen). Bei beiden gibt mir der Versuch .value auszugeben leider einfach nur "undefined" und das obwohl die Anzeige der Zahl durchaus funktioniert. Leider hilft mir das immer noch nicht mit meiner If-Abfrage

    Ich danke euch vielmals für die Hilfe

  • #2
    In JavaScript kommt man mit Browser.getValue(getElement(...)) an den Wert bzw. bei Zahlen noch besser mit getNumberObject(getElement(...))

    Kommentar


    • #3
      Zitat von MartinW Beitrag anzeigen
      In JavaScript kommt man mit Browser.getValue(getElement(...)) an den Wert bzw. bei Zahlen noch besser mit getNumberObject(getElement(...))
      Wusste ich doch, dass ich mir blöd vorkommen würde... ich hatte vergessen, dass Browser.getValue() existiert. Vielen Dank für die Hilfe und frohe Ostern, ich hol mir erstmal eine Aspirin.
      Simon

      Kommentar


      • #4
        Hallo zusammen,

        älterer Beitrag, aber bei mir aktuelles Problem.

        Beispiel: Es gibt zwei Produkte zur Auswahl im Dropdown "WindwosPC" und "Mac". Wenn im Dropdown der "WindowsPC" ausgewählt wird, bleibt die Checkbox "Outlook vorinstallieren" bestehen. Wird die Option "Mac" gewählt, soll die Checkbox und das Textfeld dazu verschwinden.

        In der Eingabeseite schaffe ich es, dass die Checkbox ausgeblendet wird, wenn der "Mac" gewählt wird. Das Text-Titelfeld bleibt bestehen (stört mich an der Stelle aber nicht so, hauptsache die Checkbox ist ausgeblendet)

        In der Anssichtsseite dazu klappt das leider gar nicht. Dort muss beides ausgeblendet werden, wenn der "Mac" gewählt wurde, aber hier bleibt sogar die Checkbox stehen.

        Code:
        //Ausblenden OUTLOOK Checkbox wenn Produkt "Mac" gewählt ist (Eingabemaske)
        
        function OUTLOOK_ausblenden(){
            var dropdown_Produkt= Browser.getValue(getElement("6C756B1C013A5D2A6503567CA12A0AB7B892D942"));
            var checkbox= $(getElement("D219C570312ECCA6455B9BC50CCA8BCBC5456472"));
            var checkboxText= ("53ED8B61E15152226382B3F4399E99705AFC0C79");
        
        if(dropdown_Produkt == "Windows" ){
            checkbox.show()
            checkboxText.show()}
        else{
            checkbox.hide()
            checkboxText.hide()
        }}
        
        //Ausblenden OUTLOOK Checkbox wenn Produkt "Mac" gewählt ist (Ansichsseite)
        
        function OUTLOOK2_ausblenden(){
            var checkbox= Browser.getValue(getElement("2EC25BD5065D23A3616A6BCEB4C7321804E28EAD"));
            var checkboxText= ("51AC8D317C11E8BD85FDF02C18BB676AAC48FA29");
        
        if(checkbox == false){
            checkbox.hide()
            checkboxText.hide()}
        else{
            checkbox.show()
            checkboxText.show()
            }}​
        Finde den Fehler Hab ich einen generellen Fehler im Code? Die GUID stimmen mit den betreffenden Werten überein.

        Besten Dank vorab!
        Grüße,
        Matthias

        Kommentar


        • #5
          Hallo Matthias,

          wenn du eine Ansichtsseite hast, würde ich glaub auf Velocity umsteigen.
          In dieser Seite wirst du wahrscheinlich nichts ändern.
          Dazu am besten Label und Checkbox gruppieren und dann die Gruppierung ein oder ausblenden.
          Dann "flackert" auch nichts beim laden.

          lg Angi

          Kommentar


          • #6
            Hallo Angi,

            hab die beiden Elemente in eine Gruppe gepackt und auf die GUID der Gruppe referenziert. Leider aber ohne Erfolg

            Was mich vor allem stutzig mache ist, dass es in der Eingabemaske eben funktioniert, dass die Checkbox ausgeblendet wird. In der Konsole des Browsers wird bei Ausführung "TypeError: checkboxText.hide is not a function" protokolliert. Tatsächlich funktioniert es ja aber das die Checkbox "gehidet" wird?!?!
            Nur in der Ansichtsseite nicht.

            Vermutlich stolpere ich irgendwann wieder zufällig über die Lösung.

            Danke!

            EDIT: Mittlerweile konnte ich das Problem eingrenzen. Ich schaffe es inzwischen die Gruppe auszublenden, allerdings nur wenn das Bedingungsfeld keine Checkbox ist die ich Abfrage. Die Checkbox kann ja eigentlich nur den Wert true, oder false haben. Da es im anderen Fall geht, vermute ich, dass es also an der Zeile für die Wertabfrage der Checkbox hängt:
            var checkbox= Browser.getValue(getElement("2EC25BD5065D23A3616A6 BCEB4C7321804E28EAD"));

            Kommentar


            • #7
              Hallo Matthias,

              bist du sicher, dass dir die Checkbox true und false zurück gibt? Ich glaube ich hatte auch schon das Phänomen, dass bei mir 0 und 1 drin stand.
              Vielleicht löst dass das Problem, wobei dies natürlich nichts mit der obigen Fehlermeldung zutun hat.

              lg Angi

              Kommentar


              • #8
                Hallo Angi,

                ich hab es versucht mit:
                == true
                == 1
                == checked

                leider jeweils Fehlanzeige

                Trotzdem danke für den Hinweis. Wäre nicht das erste Mal, dass ich die naheliegendste Lösung übersehe

                VG
                Matthias

                Kommentar


                • #9
                  versuche es doch einmal mit
                  Code:
                  oCheckbox = getElement("...");
                  if oCheckbox.checked == true {
                     ... z.B. Gruppe einblenden
                  } else {
                     ... z.B. Gruppe ausblenden
                  ​}

                  Kommentar


                  • #10
                    Ich würde es auf einer Ansichtsseite auch mit Velocity machen.

                    Wenn es JavaScript sein soll dann von mir auch zwei Schnipsel aus unserem Wiki:

                    per Kontrollkästchen
                    Code:
                    function GrpEinblendenChkbx(chkbxGUID, grpGUID)
                    {
                    var chkbxValue = Browser.getValue(getElement(chkbxGUID));
                    var grp = getElement(grpGUID);
                    
                    if(chkbxValue == true) {
                    grp.style.visibility = "visible"; /*Gruppe einblenden*/
                    grp.style.display = "block";}
                    else {
                    grp.style.visibility = "hidden"; /*Gruppe ausblenden*/
                    grp.style.display = "none";
                    }
                    return;
                    }​
                    per Auswahlliste
                    Das Skript liegt auf der Auswahlliste als onchange. Bei Bedarf auch im onload der Seite. Diese Variante unterstützt die Übergabe des Parameters auf den für die Sichtbarkeit positiv geprüft wird.

                    Code:
                    function GrpEinblenden(GrpGUID, ListenGUID, actionValue) {
                    var grp = getElement(GrpGUID);
                    // var liste = getElement(ListenGUID).value; // liefert Speicherwert
                    var liste = Browser.getValue(getElement(ListenGUID),"text"); // liefert Anzeigewert
                    if(liste == actionValue) {
                    grp.style.visibility = "visible";
                    grp.style.display = "block";
                    }
                    else {
                    grp.style.visibility = "hidden";
                    grp.style.display = "none";
                    }
                    return;
                    }
                    Der Aufruf erfolgt also mit:
                    Code:
                    GrpEinblenden('4F9F2435B2E19E95B678E00715EB2B48575 61BD0', '82D3A21ECD5DD8698176CBEADCBE5A451E9A4794','Ersatz antrag');​

                    Kommentar


                    • #11
                      Zitat von reiner.fuest Beitrag anzeigen
                      Code:
                      function GrpEinblendenChkbx(chkbxGUID, grpGUID)
                      {
                      var chkbxValue = Browser.getValue(getElement(chkbxGUID));
                      var grp = getElement(grpGUID);
                      
                      if(chkbxValue == true) {
                      grp.style.visibility = "visible"; /*Gruppe einblenden*/
                      grp.style.display = "block";}
                      else {
                      grp.style.visibility = "hidden"; /*Gruppe ausblenden*/
                      grp.style.display = "none";
                      }
                      return;
                      }​
                      Der Code ist etwas unsauber, da z.B. Browser.getValue einen String zurückliefert, dieser aber mit einem boolean verglichen wird (was durch die JS Type Coercion dann funktioniert). Generell würde ich eher die neuen ix.util-Varianten verwenden.

                      Code:
                      function GrpEinblendenChkbx(chkbxGUID, grpGUID) {
                        const grp = ix.util.getElement(grpGUID);
                        const checkboxValue = ix.util.getUp(chkbxGUID)?.isChecked();
                        grp.toggle(checkboxValue);
                      }
                      
                      function GrpEinblendenChkbxKurz(chkbxGUID, grpGUID) {
                        ix.util.getElement(grpGUID).toggle(ix.util.getUp(chkbxGUID)?.isChecked());
                      }​

                      Kommentar


                      • #12
                        Na, da hat sich der Post doch gelohnt. Danke für die Aktualisierung, die gleich in unserem (alten) Wiki landet!

                        Kommentar

                        Lädt...
                        X