html Catch-Ereignis, wenn der Benutzer in eine Texteingabe tippt

Lesezeit: 2 Minuten

Ich frage mich nur, wie ich das Ereignis abfangen kann, wenn der Benutzer in ein Texteingabefeld in meiner Webanwendung eintippt.

Szenario ist, ich habe ein Kontaktlistenraster. Oben im Formular kann der Benutzer den Namen des gesuchten Kontakts eingeben. Sobald die Texteingabe mehr als 1 Zeichen enthält, möchte ich mit der Suche nach Kontakten im System beginnen, die diese vom Benutzer eingegebenen Zeichen enthalten. Während sie weiter tippen, ändern sich die Daten.

Alles, was es wirklich ist, ist eine einfache Type-Ahead-Type-Funktionalität (oder Autocomplete), aber ich möchte Daten in einem anderen Steuerelement abfeuern.

Ich kann den Text aus der Eingabe herausholen, sobald die Eingabe den Fokus verloren hat, aber das passt nicht zur Situation.

Irgendwelche Ideen?

Vielen Dank

  • Verwenden Sie die keyup-Ereignis.

    – nnnnn

    11. Dezember 2012 um 21:03 Uhr


Benutzer-Avatar
adeneo

Verwenden Sie das Keyup-Ereignis, um den Wert zu erfassen, während der Benutzer eintippt, und tun Sie, was immer Sie tun, um nach diesem Wert zu suchen:

$('input').on('keyup', function() {
     if (this.value.length > 1) {
          // do search for this.value here
     }
});

Eine weitere Möglichkeit wäre die input Ereignis, das alle Eingaben abfängt, von Tasten, Einfügen usw.

  • Beachten Sie, dass beim Ausschneiden/Einfügen mit der Maus keyup nicht ausgelöst wird, aber der Eingabewert sich ändert. Sie können den Ereignissen auch “Ausschneiden und Einfügen” hinzufügen, wenn dies wichtig ist.

    – Curtis Yallop

    3. Juni 2015 um 22:18 Uhr


  • Beachten Sie, dass Keyup nicht immer ausgelöst wird, wenn Sie eine Taste eingeben und dann schnell die Tabulatortaste drücken, um zum nächsten Steuerelement zu wechseln. Wenn Sie “Blur” fangen, wird dieser Fall behandelt. Obwohl das Hinzufügen dieses Ereignisses hier die Suche jedes Mal auslösen würde, wenn Sie auf die Eingabe klicken.

    – Curtis Yallop

    3. Juni 2015 um 22:24 Uhr


  • @CurtisYallop – Beachten Sie, dass die Frage besagt “…wenn der Benutzer tippt”wenn Sie alle Änderungen des Werts erfassen möchten, die input Veranstaltung wird das tun.

    – adeneo

    3. Juni 2015 um 23:07 Uhr

Warum nicht das HTML-oninput-Ereignis verwenden?

<input type="text" oninput="searchContacts()">

  • Ohne unnötigen Overhead macht es keinen Spaß.

    – Pablo Arielle

    21. August 2019 um 20:36 Uhr

Ich würde das ‘Eingang‘ und ‘Eigentumsänderung‘ Veranstaltungen. Sie feuern auch auf Ausschneiden und Einfügen über die Maus.

Bedenke auch entprellt Ihren Event-Handler, damit schnelle Schreiber nicht durch viele DOM-Aktualisierungen bestraft werden.

siehe mein Versuch:

Sie sollten .combo nach jeder .input-Klasse einfügen.

.input ist ein Textfeld und .combo ist ein div

$(".input").keyup(function(){
    var val = this.value;
    if (val.length > 1) {
        //you search method...
    }
    if (data) $(this).next(".combo").html(data).fadeIn(); else $(this).next(".combo").hide().html("");
});

$(".input").blur(function(){
    $(this).next(".combo").hide();
});

1102860cookie-checkhtml Catch-Ereignis, wenn der Benutzer in eine Texteingabe tippt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy