監控一段時間沒輸入可用於簡單的輸入完成
上次實現了一個模擬輸入完成則發送請求到後台獲取資料的並顯示到前台的問題,其中核心的判斷標準是輸入完成的定義。
即:使用者怎麼算輸入完成。
我使用的標準是,當一個文字方塊中,裡面的內容1秒鐘無變化,則表示使用者1秒鐘內無輸入,表示使用者是已經輸入完成,再等待回傳資料了。那麼jQuery如何實現判斷1秒內無輸入呢。
<!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>
原理
就是這樣一段精簡的程式碼。其原理可簡述如下:
使用者每次按下鍵盤,都記錄目前的時間,然後再1秒後再判斷一下時間。
lastTime由於是全域變量,所以當用戶在輸入的時候,lastTime是一直在變化的,所以一秒後再用lastTime-e.timeStamp,只有最後按下的e.timeStamp那一次才會為0 。