Ich verwende ein <datalist>
Und AJAX verwenden, um die Liste aufzufüllen
%Vor%Allerdings kann ich keine Aktion ausführen, wenn ich auf eine Auswahl im Datenlisten klicke, zum Beispiel wenn ich "Ref F" eintippe und der Punkt "Ref flowers" erscheint, wenn ich darauf klicke I muss ein Ereignis ausführen.
Wie kann ich das tun?
%Vor%Es tut mir leid, dass ich diese Frage ausgegraben habe, aber ich hatte ein ähnliches Problem und habe eine Lösung, die auch für Sie funktionieren sollte.
Diese Lösung stammt von Stephan Mullers Lösung. Es sollte auch mit einem dynamisch bestückten Datenlogger funktionieren.
Leider gibt es keine Möglichkeit zu sagen, ob der Benutzer ein Element aus dem Datenlogger angeklickt oder ausgewählt hat, indem er die Tabulatortaste gedrückt oder die ganze Zeichenfolge von Hand eingegeben hat.
Da keine Ereignisse für <datalist>
elements verfügbar sind, gibt es keine Möglichkeit, eine Auswahl aus den Vorschlägen zu treffen, außer den Ereignissen von input
zuzusehen ( change
, input
, usw.). Siehe auch meine Antwort hier: Bestimmen Sie, ob ein Element aus HTML 5-Datenlisten ausgewählt wurde, indem Sie die Eingabetaste drücken
Um zu prüfen, ob eine Auswahl aus der Liste ausgewählt wurde, sollten Sie jede Änderung mit den verfügbaren Optionen vergleichen. Das bedeutet, dass das Ereignis auch ausgelöst wird, wenn ein Benutzer manuell einen genauen Wert eingibt. Es gibt keine Möglichkeit, dies zu stoppen.
Datalist unterstützt Click-Listener nicht und OnInput ist sehr kostspielig und überprüft jedes Mal die gesamte Liste, wenn sich etwas ändert.
Was ich getan habe, war:
%Vor%FocusOut wird jedes Mal ausgelöst, wenn ein Client auf den Eingabetext klickt und dann irgendwo anders klickt. Wenn sie auf den Text geklickt haben und dann woanders geklickt haben, nehme ich an, dass sie den gewünschten Wert setzen.
Um zu überprüfen, ob der Wert gültig ist, machen Sie dasselbe wie die Eingabe:
%Vor%Tags und Links javascript html5 html-datalist dom-events