Heim > Artikel > Web-Frontend > jQuery überwacht die Tastatur für einen bestimmten Zeitraum ohne input_jquery
Überwachen Sie, dass über einen bestimmten Zeitraum hinweg keine Eingabe erfolgt, um einfache Eingaben abzuschließen
Beim letzten Mal haben wir das Problem implementiert, eine Anforderung an den Hintergrund zu senden, um Daten zu erhalten, wenn die simulierte Eingabe abgeschlossen ist, und sie an der Rezeption anzuzeigen. Das zentrale Beurteilungskriterium ist die Definition der Eingabevervollständigung.
Das heißt: Wie zählt der Benutzer die Eingabe als abgeschlossen?
Der von mir verwendete Standard lautet: Wenn sich der Inhalt eines Textfelds eine Sekunde lang nicht ändert, bedeutet dies, dass der Benutzer innerhalb einer Sekunde keine Eingabe vorgenommen hat, was darauf hinweist, dass der Benutzer die Eingabe abgeschlossen hat und auf die Rückgabedaten wartet . Wie stellt jQuery fest, ob innerhalb einer Sekunde keine Eingabe erfolgt?
<!DOCTYPE html> <html> <head> <script src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"></script> <script> var lastTime; $(function(){ $('#text1').keyup(function (e) { lastTime = e.timeStamp; setTimeout(function () { if (lastTime - e.timeStamp == 0) { alert("1秒内没再输入,可以发送查询"); } }, 1000); }); }) </script> </head> <body> <input id="text1" type="text" value="" /> </body> </html>
Prinzip
Das ist so ein prägnanter Code. Sein Prinzip lässt sich kurz wie folgt beschreiben:
Jedes Mal, wenn der Benutzer die Tastatur drückt, wird die aktuelle Zeit aufgezeichnet und die Zeit dann nach 1 Sekunde beurteilt.
Da lastTime eine globale Variable ist, ändert sich lastTime immer, wenn der Benutzer tippt. Wenn Sie also lastTime-e.timeStamp nach einer Sekunde verwenden, ist nur der zuletzt gedrückte e.timeStamp 0. .