Aktion ausführen, wenn Sie auf die Option HTML5-Datenliste klicken

8

Ich verwende ein <datalist>

%Vor%

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%     
Hobbyist 04.05.2015, 04:39
quelle

3 Antworten

12

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.

%Vor% %Vor%

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.

    
chillichief 25.08.2015 13:22
quelle
4

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.

%Vor% %Vor%
    
Stephan Muller 05.05.2015 13:40
quelle
0

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%     
Dinidiniz 03.03.2018 18:07
quelle