Das Schlüsselereignis wird nicht in Firefox auf Android ausgelöst, wenn der Wortvorschlag aktiviert ist

8

Ich habe ein Suchfeld, das eine automatische Vervollständigung während der Eingabe auslöst. Ich habe es auf Keyup auslösen. Dies funktioniert in den meisten Browsern einwandfrei, aber in Firefox unter Android funktioniert das nicht. Es scheint, als ob das Keyup-Ereignis während der Eingabe nicht ausgelöst wird. Dies geschieht nur, wenn in den Android-Tastatureinstellungen Wortvorschläge aktiviert sind.

Ich sehe in der Google-Suche, dass die automatische Vervollständigungssuche dort für dasselbe Setup funktioniert, also ist es offensichtlich möglich. Ich frage mich wie? Ist es ein besonderes Ereignis, auf das ich hören muss, damit es funktioniert?

Zusätzlich habe ich versucht, die Ereignisse zu ändern, Keydown und Tastendruck, aber keiner wird ausgelöst.

HTML:

%Vor%

jQuery-Ereignisbindung:

%Vor%

Hinweis:
Manchmal wird das Schlüsselereignis ausgelöst , das normalerweise einen Schlüssel trifft, der nicht zur Bildung eines Wortes führt. Am offensichtlichsten ist hier Enter , was immer auslöst. Ein anderer ist Space , der auslöst, weil kein Wort einen Raum enthält, da der Raum die Definition eines abgeschlossenen Wortes ist. Backspace löst aus, wenn das letzte gelöschte Zeichen nicht in einem Wort enthalten ist. Dies bedeutet, dass es ausgelöst wird, wenn Sie nur den letzten verbleibenden Buchstaben eines Wortes gelöscht haben (also den Anfang des Feldes oder den Cursor nach einem Leerzeichen), aber nicht, wenn Sie am Ende eines Worts, an dem der Cursor steht, einige Zeichen gelöscht haben unmittelbar nach einem Brief. Grundsätzlich wird das Schlüsselereignis nicht ausgelöst, wenn der Tastendruck zu einer Art Wortvorschlag aus der Tastatur-App führt.

Als Randnotiz kann ich sagen, dass in Chrome alles auf dem gleichen Gerät funktioniert.

    
awe 07.01.2013, 10:41
quelle

3 Antworten

12

Sie können die input Event, das funktionierte für mich in Firefox auf Android. Sie können Ereignishandler für Abwärtskompatibilität an die beiden Ereignisse input und keyup binden, aber in den meisten modernen Browsern werden beide ausgelöst:

%Vor%

Beispiel hier: Ссылка

    
germankiwi 02.08.2013, 02:22
quelle
0

Ich habe eine Lösung in diese Antwort zu einer anderen Frage gefunden. Die Frage war im Grunde genommen "dupliziere den Text, den ich dynamisch in einen anderen Teil der Seite schreibe". Die Antwort beinhaltete Unterstützung für das Erfassen von Änderungen durch Nicht-Tastaturaktionen, wie das Einfügen von Text mit der Maus. Es wurde gelöst, indem ein Sniffer auf den Fokus im Textfeld gestartet wurde, der überprüft, ob sich der Wert mit setInterval(...) geändert hat. Es löscht den Timer bei Unschärfe.

Dies löste mein Problem, das im Grunde war, dass die Schlüsselereignisse nicht ausgelöst wurden, sowie das Problem "Einfügen mit Maus", von dem ich nicht wusste, dass es ein Problem war, bis ich diese Antwort fand ...!

Das funktioniert, aber ich bin mir nicht sicher, ob ich mit dieser Lösung total zufrieden bin, weil es einen Sniffer verwendet. Ich wäre glücklicher mit der Verwendung einer Art von Ereignis, das auf Wertänderung ausgelöst wird, egal was die Ursache der Änderung ist. Die Verwendung des change -Ereignisses würde nicht funktionieren, da dies erst ausgelöst wird, wenn der Fokus das Feld verlässt.

    
awe 08.01.2013 09:10
quelle
0

Durch die Tatsache, dass Firefox auf Android keine Schlüsselereignisse auslöst, sondern auch das Eingabeereignis irgendwie komisch auslöst (wie wenn man eine Taste drückt, werden zwei Ereignisse ausgelöst, und es löst auch das Eingabeereignis aus Wenn Sie die Eingabe verlassen) musste ich mein eigenes Ereignis schreiben:

%Vor%

Dieses Ereignis wird nur ausgelöst, wenn ein Eingabeereignis auftritt, das den Wert ändert, sodass keine Ereignisse unnötig ausgeführt werden.

    
freek van der wand 01.04.2015 10:09
quelle