Es gibt einige einfache plugin sein wird, die ich gemacht habe, das tut exacly das. Es erfordert viel weniger Code als einige vorgeschlagene Lösungen und es ist sehr leicht (~ 0,6kb)
Zuerst erstellen Sie Bid
Objekt als bumped
jederzeit sein kann. Jede Bump wird verzögern feuern Bid Rückruf für die nächste gegebene Zeit.
var searchBid = new Bid(function(inputValue){
//your action when user will stop writing for 200ms.
yourSpecialAction(inputValue);
}, 200); //we set delay time of every bump to 200ms
Wenn Bid
Objekt fertig ist, müssen wir es irgendwie bump
. Lassen Sie uns stoßen an keyup
event
anschließen. 'Verzögert' (gestoßen) für den nächsten 200ms
Jedesmal Benutzer Taste drückt, wird Gebot:
$("input").keyup(function(){
searchBid.bump($(this).val()); //parameters passed to bump will be accessable in Bid callback
});
Was hier passiert ist. Wenn 200 ms verstrichen sind, ohne dass sie erneut "angestoßen" wurden, wird der Rückruf ausgelöst.
Auch Sie bieten 2 zusätzliche Funktionen zum Anhalten haben (wenn Benutzer gedrückt esc oder außerhalb Eingang zum Beispiel angeklickt) und für die Endbearbeitung und Callback-Brennen sofort (zum Beispiel beim Drücken Benutzer Enter-Taste):
searchBid.stop();
searchBid.finish(valueToPass);
Interessante Frage - gibt es einen bestimmten Grund, warum Sie das tun möchten? – karim79
Wenn der Benutzer mit der Eingabe eines Textfelds fertig ist, wird ihm im Prinzip ein neues angezeigt. Da das Textfeld das letzte war, konnte ich onBlur() nicht verwenden, da ich warten musste, bis der Fokus auf einer anderen Box lag. –
Es gibt keine geraden, 100% Möglichkeiten, es zu tun. Am einfachsten ist es, das Blur-Ereignis der Eingabe zu verwenden. (Andere Wege könnten sein, X Sekunden ** zu warten, nachdem ** der Benutzer die Eingabe beendet hat). –