2016-06-19 10 views
0

Ich habe eine Live-Suchleiste in jQuery gemacht, aber ich habe ein Problem!jQuery Keypress/Keydown funktioniert nicht richtig

$(document).on('keydown', '.searchInput', function(){ // or keypress I have the same result 
    console.log($(this).val()); 
}); 

Wenn ich eine Taste in das Eingabefeld ein und drücken .searchInput es meldet den letzten Wert, den er hatte. wenn ich a Zum Beispiel geben wird es log (leer), dann, wenn ich s geben (so die Suchleiste hat as drin) wird es a einzuloggen, dann, wenn ich d (asd in Suchleiste) geben wird es log as und so weiter. Was mache ich falsch? Vielen Dank!

+3

Das Problem ist, dass Sie das Ereignis an "Keydown" anhängen. Dies wird den Wert ** erfassen, bevor die Eingabe tatsächlich stattfindet **. Wenn Sie den vollständigen Wert erfassen möchten, verwenden Sie stattdessen 'keyup' Event –

+0

@AkshayKhandelwal Ich brauche wirklich Keydown (oder Keypess oder irgendetwas, das beim Drücken der Taste ausgelöst wird. Gibt es noch etwas, das ich verwenden kann? (Keydown und Keypress don 't arbeiten)) – Jim

+1

Was meinst du mit ** muss **. Gibt es eine Anforderung, die besagt, dass Sie einen weiteren Event-Handler anhängen müssen oder einen anderen Event-Handler anhängen? Wenn später der Fall ist, können Sie immer noch keyup verwenden, da alle Event-Handler –

Antwort

5

Wenn ich die Frage richtig verstanden habe, möchten Sie den vollständigen Wert in dem Textfeld erfassen, für das Sie keyup-Ereignis und nicht keydown anhängen müssen.

$(document).on('keyup', '.searchInput', function(){ // or keypress I have the same result 
    console.log($(this).val()); 
}); 
+0

Nein aufgerufen werden. Ich möchte Keydown verwenden, aber aus irgendeinem Grund funktioniert es nicht. Es protokolliert den Wert vor dem letzten (der, der jetzt auf dem Bildschirm ist. Wenn ich 'asdf' getippt habe, loggt' asd'. Wenn ich 'asd' getippt habe, loggt er' as' etc.) – Jim

+1

mit Keydown brauchst du Das Zeichen für den aktuellen Schlüssel bereithalten und an die verfügbare Zeichenfolge anhängen, was nicht machbar ist. Ich würde vorschlagen, dass Sie stattdessen 'keyup' verwenden. –

Verwandte Themen