onfocus und onkeyup funktionieren nicht gleichzeitig
Christian Tank
- javascript
Ich habe ein Formularfeld und möchte es mit den EIgenschaften "onfocus" und "onkeydown" erweitern:
<form type="text" onkeydown="xyz();" onfocus="abc();">
In einigen Browsern (z.B. Firefox auf Android) wird "onkeydown" ignoriert; ohne "onfocus" funktioniert es aber. Gibt es hier irgendwelche Konflikte? Danke Christian
Hallo
Ich habe ein Formularfeld und möchte es mit den EIgenschaften "onfocus" und "onkeydown" erweitern:
<form type="text" onkeydown="xyz();" onfocus="abc();">
In einigen Browsern (z.B. Firefox auf Android) wird "onkeydown" ignoriert; ohne "onfocus" funktioniert es aber. Gibt es hier irgendwelche Konflikte?
Schau mal hier.
Ich benutze Firefox und bei mir funktioniert das einwandfrei...
Allerdings habe ich in meinem Beispiel auch ein INPUT-Eingabefeld mit type="text"
verwendet und die Eventhandler mit der addEventListener
-Methode registriert.
<form type="text">
ist quatsch, also vielleicht lag es daran?
Gruß,
Orlok
Okay, ich habe einen Grund für die Probleme gefunden: Smartphones reagieren mit ihrer Bildschirmtastatur nicht auf onkeyup und ähnliche events. Kann mir jemand verraten, wie man trotzdem die Eingabe Buchstabe für Buchstabe überwachen kann, um per ajax live Suchvorschläge zu machen? Am normalen PC mit physischer Tastatur klappt das prima...
Hallo
Okay, ich habe einen Grund für die Probleme gefunden: Smartphones reagieren mit ihrer Bildschirmtastatur nicht auf onkeyup und ähnliche events. Kann mir jemand verraten, wie man trotzdem die Eingabe Buchstabe für Buchstabe überwachen kann, um per ajax live Suchvorschläge zu machen? Am normalen PC mit physischer Tastatur klappt das prima...
Sorry, das „auf Android“ hatte ich überlesen...
...auch wenn das an der Feststellung, dass das type-Attribut für das form-Element falsch ist, nichts ändert.
Jedenfalls sollte, wenn es um die Überwachung von Benutzereingaben in Textfeldern geht, das 'input'-Event hier das richtige für dich sein sein:
myInputElement.addEventListener('input', function ( ) {
// ...
});
Noch eine Anmerkung: Das 'focus'-Event hat keine Bubbling-Phase, das heißt, wenn du hier nicht für jedes einzelne input-Element einen Event Listener registrieren willst, musst du die Capturing-Variable auf true
setzen:
myFormElement.addEventListener('focus', function (e) {
// ...
}, true);
Gruß,
Orlok