Hilfe! Backspace löst beim Opera kein onKeyUp-Event aus!
Markus Möller
- browser
Hallo zusammen! Ich bin's wieder und ich habe auch diesmal ein Opera-Problemchen im Gepäck:
Und zwar habe ich ein Textfeld, das bei jedem Tastendruck ein Event auslösen soll:
<input type="text" onKeyUp="alert('hallo');">
Gute Nachricht:
Das klappt auch eigentlich soweit überall, aber...
Schlechte Nachricht:
Wenn der Benutzer im Opera das letzte Zeichen löscht (Backspace) gibt es keinen onKeyUp-Event (onKeyDown, onKeyPress übrigens auch nicht).
Hatte von euch schon mal einer das Problem und kennt eine Lösung? Der Versuch, das ganze mit onChange zu umgehen scheiterte, weil dieser Event erst ausgelöst wird, wenn das Feld verlassen wird.
Über Ratschläge wäre ich sehr dankbar.
Hallo Markus
Und zwar habe ich ein Textfeld, das bei jedem Tastendruck ein Event auslösen soll:
<input type="text" onKeyUp="alert('hallo');">
Gute Nachricht:
Das klappt auch eigentlich soweit überall, aber...
ich habe auch eine gute Nachricht: Unter Opera 5 klappt das noch
Schlechte Nachricht:
Wenn der Benutzer im Opera das letzte Zeichen löscht (Backspace) gibt es keinen onKeyUp-Event (onKeyDown, onKeyPress übrigens auch nicht).
und die schlechte Opera 6 kann das nicht mehr
Hatte von euch schon mal einer das Problem und kennt eine Lösung? Der Versuch, das ganze mit onChange zu umgehen scheiterte, weil dieser Event erst ausgelöst wird, wenn das Feld verlassen wird.
Hier gibt es nicht viele Möglichkeiten. Einzige Alternative die mir einfällt:
Du speicherst dir die Werte auf eine Variable und überwachst keyup und keydown. Bei onkeydown vergleichst du, ob sich der auf der Variablen gespeicherte Wert in der Zwischzeit verändert hat. Bei keyup setzt du den Wert in der Variablen neu. Zum Schluß noch mal das Gleiche mit onchange.
Viele Grüße
Antje
Hallo Antja
ich habe auch eine gute Nachricht: Unter Opera 5 klappt das noch
Schwacher Trost!
Du speicherst dir die Werte auf eine Variable und überwachst keyup und keydown. Bei onkeydown vergleichst du, ob sich der auf der Variablen gespeicherte Wert in der Zwischzeit verändert hat. Bei keyup setzt du den Wert in der Variablen neu.
Ja, genau das ist ja das Problem. Wie soll ich onkeyup bzw. onkeydown überwachen, wenn eben dieser Event bei Backspace nicht ausgelöste wird?!
Hallo Marcus
Ja, genau das ist ja das Problem. Wie soll ich onkeyup bzw. onkeydown überwachen, wenn eben dieser Event bei Backspace nicht ausgelöste wird?!
Der feuert aber beim nächsten Tastenanschlag und dann hast du die Änderung.
Viele Grüße
Antje
Hallo!
Der feuert aber beim nächsten Tastenanschlag und dann hast du die Änderung.
Tja, dann ist es aber schon zu spät.
Beispiel:
Der Text der eingegeben wird, wird als Filter verwendet. D.h. wenn ich z.B. "Antje" eingebe, erscheint eine Liste aller Personen, die Antje heißen. Das sieht so aus, dass schon während der Eingabe die Anzeige aktuallisiert wird. Also wenn man das "A" eingibt, erscheinen alle, die mit "A" beginnen. Bei Eingabe des "n" nur noch alle mit "An" usw.
Wenn man jetzt "Antjx" eingibt, erscheint wahrscheinlich nix. Löscht man den letzten Buchstaben, wären wir wieder bei "Antj" und die Anzeige soll aktuallisiert werden.
Eben das tut sie bei Opera ja nicht (weil Backspace keinen Event auslöst).
Nach deiner Lösung, müßte man zwei Zeichen löschen ("Ant") und das "j" eingeben. Erst dann wäre die Anzeige wieder aktuell. So hatte ich es ja schon.
Da das aber niht besonders clever ist, suche ich jetzt nach anderen Lösungen!