Klaus: Lösungsansatz gesucht Jquery autocomplete

Hallo,

ich nutze Jquery UI Autocomplete so, daß beim überfahren der Autocomplete-Einträge mit der Maus der Eintrag im inputfeld, daß den autocomplete ausgelöst hat, der Eintrag in hellgrauer Farbe bereits erscheint (focus: function( event, ui ) { ... ) und beim auswählen der Eintrag seine Farbe in schwarz ändert (select: function(event, ui) {... ).

Das klappt sehr gut und ist IMHO anwenderfreundlich.
Wenn der Anwender aber nun irgendwo anders hin klickt, als auf einen Eintrag innerhalb des autocomplete-widgets, dann bleibt der hellgraue Eintrag im input-Feld zurück.

Ich suche nach einem Ansatz, wie ich die hellgrauen Einträge wieder "zurücksetze", wenn der select nicht erfolgt.

Ich habe für autocomplete lediglich die Events "select" und "change" gefunden.

Ich bräuchte vielleicht etwas, was nach Schließen des autocomplete-widgets prüft, ob ein select überhaupt stattgefunden hat. Oder auch, was die Farbe des Eintrages prüft (hellgrau oder schwarz).

Oder einen ganz anderen Ansatz?

Klaus

  1. Meine Herren!

    Für Autovervollständigung rate ich zum HTML-Element <datalist>. Online-Beispiel.

    Das kommt mit einem intuitiven User-Interface, das vom Browser bereit gestellt wird. Der Nutzer ist also schon vertraut mit der Bedienung.

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. Hi,

      Das kommt mit einem intuitiven User-Interface, das vom Browser bereit gestellt wird. Der Nutzer ist also schon vertraut mit der Bedienung.

      Hatte ich drüber nachgedacht.

      Datalist kommt aber ohne jegliche Optionen. Du hast weder ein Delay, noch kannst Du eine Quelle nachladen, wenn sie gebraucht wird. Bei Datalist mußt Du immer die Quelle bereits in Dein DOM vorladen, die Einträge sehen (auf gut deutsch) Käse aus, passen nicht ins Gesamtdesign, und, und, und...

      Trotzdem danke für den Hinweis auf Datalist, ich hatte das wie gesagt, schon bedacht.

      Klaus

      1. Meine Herren!

        Das kommt mit einem intuitiven User-Interface, das vom Browser bereit gestellt wird. Der Nutzer ist also schon vertraut mit der Bedienung.

        Hatte ich drüber nachgedacht.

        Du kannst dich natürlich gegen die Standard-Variante und für die jQuery-Variante entscheiden. Aber das sollte aus den richtigen Gründen passieren, ich möchte die Diskussion noch ein wenig befeuern.

        Datalist kommt aber ohne jegliche Optionen.

        datalist kommt mit dem ganzen Potenzial von JavaScript.

        Du hast weder ein Delay,

        Möchte man das denn überhaupt? Verzögerungen sind fast immer schlecht für die UX. Eine Benutzeroberfläche sollte responsiv sein, also unverzüglich auf die Anforderungen des Nutzers reagieren und ihm zeigen, dass seine Eingaben Auswirkungen haben.

        noch kannst Du eine Quelle nachladen, wenn sie gebraucht wird. Bei Datalist mußt Du immer die Quelle bereits in Dein DOM vorladen

        Du kannst mit AJAX genauso gut neue <option>-Elemente in die Liste laden. Mit vanilla JS wird das natürlich mehr Aufwand sein als bei der jQuery-Variante. Es gibt aber auch Bibliotheken die das datalist-Element propagieren.

        die Einträge sehen (auf gut deutsch) Käse aus, passen nicht ins Gesamtdesign, und, und, und...

        Design ist nicht nur, wie es aussieht. Es gibt zwei Arten der Autovervollständigung, die Browser beherrschen: Wir reden hier über jene Art, in der wir als Entwickler dem Nutzer naheliegende Vorschläge unterbreiten. Auf der anderen Seite bieten Browser dem Nutzer aber auch Eingaben, die er schon mal gemacht hat, das sind also Vorschläge, die aus der Feder des Nutzers selber stammen. jQuerys Lösung deaktiviert das letztere, wenn das erste aktiviert ist. Das ist ein Design-Fehler.

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. Meine Herren!

          Hi,

          'könnt ich auch wieder Einiges zu schreiben. Aber mich sorgt, daß wir uns immer weiter von meiner Ursprungsfrage entfernen...

          Klaus

          1. Meine Herren!

            'könnt ich auch wieder Einiges zu schreiben. Aber mich sorgt, daß wir uns immer weiter von meiner Ursprungsfrage entfernen...

            Threaddrift gehört zur Forenphilosophie, was wir hier diskutieren geht über deine Fragestellung hinaus, das hält aber andere Forenteilnehmer nicht davon ab, eine konkrete Antwort auf deine Frage zu geben. (Für deren Verständnis und Beantwortung ein Online-Beispiel übrigens eine Bereicherung wäre)

            --
            “All right, then, I'll go to hell.” – Huck Finn
            1. Threaddrift gehört zur Forenphilosophie

              Kein Problem. Such ich (wie anscheinend inzwischen viele andere auch) ein Forum, in dem das anders ist.

              Klaus

              1. Meine Herren!

                Threaddrift gehört zur Forenphilosophie

                Kein Problem. Such ich (wie anscheinend inzwischen viele andere auch) ein Forum, in dem das anders ist.

                Hat dich neulich nicht erst ein Threaddrift auf die richtige Lösung zur falschen Frage gebracht? Du kannst weiter die beleidigte Leberwurst spielen, oder du kannst dich weiterentwickeln.

                --
                “All right, then, I'll go to hell.” – Huck Finn
                1. Hat dich neulich nicht erst ein Threaddrift auf die richtige Lösung zur falschen Frage gebracht? Du kannst weiter die beleidigte Leberwurst spielen, oder du kannst dich weiterentwickeln.

                  Nope. Dieser Thread hatte mir weder neue Erkentnisse, noch sonst irgendwas gebracht.
                  Ich fand ihn ähnlich schlecht wie diesen hier.
                  Threaddrift hat hier in den meisten Fällen wenig bis gar nichts gebracht. Threaddrift hat IMHO häufig etwas mit überzogener Selbstdarstellung zu tun. Bestes Beispiel hierfür ist für mich (das dürfen andere anders sehen) dieser Thread. Ich hatte mich ausführlich mit sämtliuchen Alternativen für ein vernünftiges Autocomplete aueinander gesetzt. Das schrieb ich Dir auch. Und wärend dieser (unsinnige) Zweig "meines" Threads blüht und meine Zeit verschwendet, liegt der Ursprungszweig völlig brach. Dafür kannst Du Dich aber hier ein wenig selber darstellen, viel Spaß dabei, ich bin raus.

                  Klaus

                  1. Mahlzeit,

                    Nope. Dieser Thread hatte mir weder neue Erkentnisse, noch sonst irgendwas gebracht.

                    Das ist aber schade für dich, da war ne ganze Menge an nützlicher Info drin, wenn auch nicht direkt für dein aktuelles Problem aber dennoch für Probleme, die ein Programmierer irgendwann mal hat.

                    Threaddrift hat IMHO häufig etwas mit überzogener Selbstdarstellung zu tun. Bestes Beispiel hierfür ist für mich (das dürfen andere anders sehen) dieser Thread.

                    Meinst du die drei OT-Posts von dir in diesem Zweig? SCNR

                    --
                    42
              2. Hi!

                Threaddrift gehört zur Forenphilosophie

                Kein Problem. Such ich (wie anscheinend inzwischen viele andere auch) ein Forum, in dem das anders ist.

                Da kenn ich nur Stackoverflow. Aber das liest Du ja nicht mehr, wei Du raus bist. Ausserdem ists n neuer Threaddrift. o.O

                --
                Signaturen sind bloed.
    2. Noch etwas,

      Für Autovervollständigung rate ich zum HTML-Element <datalist>. Online-Beispiel.

      Kannst Du mit Datalist bei Auswahl eines Eintrages mehrere Formularfelder ausfüllen? Mit Jquery UI autocomplete ist das kein Problem...

      Klaus

      1. Meine Herren!

        Kannst Du mit Datalist bei Auswahl eines Eintrages mehrere Formularfelder ausfüllen?

        Nein, und das ist auch nicht die Aufgabe einer low-level API für Autovervollständigung.

        Mit Jquery UI autocomplete ist das kein Problem...

        Das ist eine Zusatzanforderung, die über die Autovervollständigung als solche hinaus gehen. Wenn du diese Leistung für dich nutzen kannst, dann ist das ein Argument für jQuery.

        --
        “All right, then, I'll go to hell.” – Huck Finn