昨天在寫界面的時候,想實現一個功能,就是在文本框輸入時,自動計算字數:
code
一開始,個人想法是這樣的,給文本框添加個事件keydown,當點擊鍵盤是,自動就算文本框裏面字符的長度,這時候就出現了一個問題,當我按下鍵盤時,計算得是我按以前的字符,如圖:事件
代碼以下:io
$("#key_sen").keydown(function(event){ var keysenLen = $("#key_sen").val().length ; if ($("#key_sen").val()){ $("#zisu").text("(共" + keysenLen + "個字)"); } else { $("#zisu").text(""); }
接着我就是是的在 計算字符的時候,直接加一:event
var keysenLen = $("#key_sen").val().length + 1;
這時候,同時出現個問題,就是當你刪除的時候,字符長度仍是以前的,我按下1234567,而後刪除7,顯示長度爲8:如圖function
後來想一想,key有兩個事件,一個是keydown,一個是keyup,keydown,是在你輸入顯示在屏幕以前就發生的了,keyup是輸入顯示後才發生,果真換成keyup ,就沒有出現什麼毛病。class
固然keyup,有個用處,就是限定你輸入,譬如,若是之規定用戶輸入數字,那能夠這麼寫:im
$("#key_sen").keydown(function(event){ if (event.keyCode > 105 || event.keyCode < 97){ return false } });
這時候,你輸入除數字外的鍵,直接被鎖定,不會顯示。img