Christian Tank: onfocus und onkeyup funktionieren nicht gleichzeitig

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

  1. 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

    1. 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...

      1. 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