延遲使用者鍵入的 Keyup 處理程序執行
搜尋搜尋欄位中的每個按鍵可能會導致過多的 AJAX 請求。為了解決這個問題,最好引入一個延遲,僅當用戶在指定的時間內停止打字時才觸發搜尋。 setTimeout 等傳統方法尚未被證明有效。
另一種方法涉及以下函數:
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); }; }
與keyup 事件處理程序的整合可以如下實現:
$('#input').keyup(delay(function (e) { console.log('Time elapsed!', this.value); }, 500));
此函數接受回呼和以毫秒(ms) 為單位的延遲。它利用clearTimeout 來防止計時器重疊,並在每個按鍵事件上安排一個新的計時器。當延遲到期時,它會使用傳遞給原始事件處理程序的上下文和參數來呼叫回調。
此解決方案有效地延遲了 keyup 處理程序的執行,直到使用者在指定的時間內停止鍵入,從而優化了搜尋體驗並減少不必要的 AJAX 請求。
以上是如何延遲 Keyup 事件處理以優化 AJAX 搜尋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!