前言
一開始在做搜尋輸入時,如果直接使用$(‘input’).keyup(function()的方式,
會產生一個使用者關鍵字還沒輸入完,但搜尋已經在跑了,
例如你想搜尋’logdown’,當按下’l’開始,他就已經跑過一次搜尋,
如果背後搜尋資料很大量的話,很容易有效能問題,
setTimeout()
一個簡單的方式,用javascript的setTimeout來製造這個延遲,
當使用者輸入第一個字時,那就設一個timeout變數給他,
每當使用者輸入完資料,都會先等待這個延遲時間,
如果使用者繼續輸入資料,那就把舊延遲清除,換上新延遲,
如果使用者已經輸入完畢,那延遲時間後才會開始搜尋,
1 | var search_Timeout; //先初始化一個timeout變數 |
結語
這種方式可以簡單地避免keyup時就跑一次搜尋的問題
以上面的一秒鐘為例,在延遲的一秒內輸入完Jquery這個關鍵字,那就會只執行一次關鍵字為Jquery的搜尋