Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Auswahlliste in einem String speichern

    NEWS

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Auswahlliste in einem String speichern

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Marc9025 @OliverIO last edited by

      @oliverio
      vielen vielen Dank für deine Mühe.
      Es klappt super 👍
      Aus deinem Link das Demo Projekt
      https://ehynds.github.io/jquery-ui-multiselect-widget/
      das wäre doch schon Perfekt 😉
      Aber nur wenn das nicht zu viel Aufwand ist.

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Marc9025 last edited by

        @marc9025

        probier mal hier.
        das mit dem widget war sogar noch einfacher, da genau das vorgecshlagene bereits in vis enthalten ist (allerdings in einer seeeehr alten version) zur wauswahl der widgets.
        kleine schwierigkeit ist, das das multiselect bei jedem klick sich schließt und du für die wahl weitere elemente das immer erneut öffnen musst.
        problem ist, sobald ein wert in einen datenpunkt geschrieben wird, wird das widget komplett neu erzeugt und dabei wird es geschlossen.

        <select id="mySelect" multiple="multiple" onchange="myFunction(this)">
        </select>
        <%= dp['0_userdata.0.test.test1'] %>
        <script>
            var datapoint="0_userdata.0.test.test1";
            var selectedvalue = "<%= dp['0_userdata.0.test.test1'] %>";
            var selectid="mySelect";
            var values= [
                {"display":"Wert1",value:"w1"},
                {"display":"Wert2",value:"w2"},
                {"display":"Wert3",value:"w3"},
                {"display":"Wert4",value:"w4"}
                ];
            values.map(el=>$("#"+selectid).append($('<option>', {
                value: el.value,
                text: el.display,
                selected:selectedvalue.split("|").includes(el.value)
            })));
            var $mySelect  = $('#mySelect').multiselect();
            function myFunction(el) {
                debugger;
                vis.setValue(datapoint,($(el).val()||[" "]).join("|"));
            }
        </script> 
        
        M 1 Reply Last reply Reply Quote 0
        • M
          Marc9025 @OliverIO last edited by

          @oliverio
          ja soweit ist es super.
          Stimmt es schließt bei jedem klick was es etwas schwierig macht, wenn man mal mehr anklicken möchte 🙂

          Jetzt ist es so das, dass Ergebnis angezeigt wird. Kann man das ausblenden ? Ich habe da nämlich ziemlich lange Namen 🙂

          1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO last edited by

            @marc9025
            Sorry, vergessen zu entfernen.
            Einfach Zeile drei löschen.

            1 Reply Last reply Reply Quote 0
            • M
              Marc9025 last edited by

              @oliverio
              super, vielen dank 👍
              gibt es den eine Möglichkeit den "Fehler mit dem schließen beim klicken" zu beheben ?

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @Marc9025 last edited by

                @marc9025
                ne leider mit der basisfunktionalität nicht und ohne da noch was größers dazuzuprogrammieren.
                das ist die funktionsweise des widgets, das sobald eine änderung des datenpunkts erfolgt sich das ding neu aufbaut.
                ansonsten müsste man noch eine bestätigung mit einbauen, das der code weiß wann fertig ist. hm das könnte ich mal noch probieren.
                dann würde automatisch am ende noch ein element eingefügt werden, das "fertig" heißt. erst dann würde der datenpunkt geschrieben werden.

                M 1 Reply Last reply Reply Quote 0
                • M
                  Marc9025 @OliverIO last edited by

                  @oliverio
                  das wäre natürlich mega wenn das gehen würde.

                  OliverIO 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @Marc9025 last edited by

                    @marc9025

                    so hier.
                    Den display-Wert von fertig darfst du Ändern, den value-Wert von fertig nicht.

                    <select id="mySelect" multiple="multiple" onchange="myFunction(this)">
                    </select>
                    <script>
                        var datapoint="0_userdata.0.test.test1";
                        var selectedvalue = "<%= dp['0_userdata.0.test.test1'] %>";
                        var selectid="mySelect";
                        var values= [
                            {"display":"Wert1",value:"w1"},
                            {"display":"Wert2",value:"w2"},
                            {"display":"Wert3",value:"w3"},
                            {"display":"Wert4",value:"w4"},
                            {"display":"fertig",value:"fertig"}
                            ];
                    //der letzte eintrag mit fertig muss genau so bleiben, oder der code muss angepasst werden    
                        
                        values.map(el=>$("#"+selectid).append($('<option>', {
                            value: el.value,
                            text: el.display,
                            selected:selectedvalue.trim().split("|").includes(el.value)
                        })));
                        var $mySelect  = $('#mySelect').multiselect({
                            click: function(event,ui) {
                            }
                        });
                        function myFunction(el) {
                            debugger;
                            if (($(el).val()||[" "]).includes("fertig")) {
                                vis.setValue(datapoint,($(el).val()||[]).filter(el=>el!="fertig").join("|")+" ");
                            }
                        }
                    </script> 
                    
                    M 1 Reply Last reply Reply Quote 1
                    • M
                      Marc9025 @OliverIO last edited by

                      @oliverio
                      super es ist fast perfekt 😉
                      Bei mir zeigt er den Datenpunkt über dem Widget an, kann man den ausblenden ?

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @Marc9025 last edited by

                        @marc9025

                        sollte er nicht. bei mir sieht das so aus

                        16ce26ff-cea8-4316-9021-fb65df985cf3-image.png

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          Marc9025 @OliverIO last edited by

                          @oliverio
                          tut mir leid das war mein Fehler 😞
                          Dir vielen Dank für deine Mühe und deine Geduld es ist so wie ich es brauche. 👍

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          687
                          Online

                          32.4k
                          Users

                          81.2k
                          Topics

                          1.3m
                          Posts

                          2
                          17
                          631
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo