Verzögerung der Ausführung des Keyup-Handlers für Benutzereingaben
Die Suche nach jedem Tastendruck in einem Suchfeld kann zu übermäßigen AJAX-Anfragen führen. Um dies zu beheben, ist es wünschenswert, eine Verzögerung einzuführen, die eine Suche nur dann auslöst, wenn der Benutzer für eine bestimmte Dauer mit der Eingabe aufhört. Herkömmliche Methoden wie setTimeout haben sich nicht als effektiv erwiesen.
Ein alternativer Ansatz beinhaltet die folgende Funktion:
function delay(callback, ms) { var timer = 0; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { callback.apply(context, args); }, ms || 0); }; }
Die Integration mit dem Keyup-Ereignishandler kann wie folgt erreicht werden:
$('#input').keyup(delay(function (e) { console.log('Time elapsed!', this.value); }, 500));
Diese Funktion akzeptiert einen Rückruf und eine Verzögerung in Millisekunden (ms). Es nutzt „clearTimeout“, um überlappende Timer zu verhindern und plant für jedes Keyup-Ereignis einen neuen Timer. Wenn die Verzögerung abläuft, wird der Rückruf mit dem Kontext und den Argumenten aufgerufen, die an den ursprünglichen Ereignishandler übergeben wurden.
Diese Lösung verzögert effektiv die Ausführung des Keyup-Handlers, bis der Benutzer für die angegebene Dauer mit der Eingabe aufhört, wodurch die Suche optimiert wird Erfahrung und Reduzierung unnötiger AJAX-Anfragen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Verarbeitung von Keyup-Ereignissen verzögern, um AJAX-Suchen zu optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!