先了解下各事件的區別 javascript
- keydown:在控件有焦點的狀況下按下鍵時發生
- keypress:在控件有焦點的狀況下按下鍵時發生
- keyup: 在控件有焦點的狀況下釋放鍵時發生
意義 html
- keypress主要用來接收字母、數字等ANSI字符。keydown 和 keyup 事件過程一般能夠捕獲鍵盤除了PrScrn全部按鍵 (這裏不討論特殊鍵盤的特殊鍵)
- keypress 只能捕獲單個字符,keydown 和 keyup 能夠捕獲組合鍵
- keypress 不顯示鍵盤的物理狀態(SHIFT鍵),而只是傳遞一個字符。keypress 將每一個字符的大、小寫形式做爲不一樣的鍵代碼解釋,即做爲兩種不一樣的字符。
- keydown 和 keyup 不能判斷鍵值字母的大小,用兩種參數解釋每一個字符的大寫形式和小寫形式:keycode — 顯示物理的鍵(將 A 和 a 做爲同一個鍵返回)和 shift —指示 shift + key 鍵的狀態並且返回 A 或 a 其中之一
- keypress 不區分小鍵盤和主鍵盤的數字字符,keydown 和 keyup 區分小鍵盤和主鍵盤的數字字符
- keydown、keyup事件是當按下 ( keydown ) 或鬆開 ( keyup ) 一個鍵時發生的。因爲通常按下鍵盤的鍵每每會當即放開(這和鼠標不一樣),因此這兩個事件使用哪一個差異不大。並且,up和其餘二者還有一個區別:要判斷key修改後的狀態必須用up
<div><input id="input" onkeydown="return a(event)"/><p></p></div>
<script type="text/javascript" defer="defer">
function a(e){
var keyCode = e.keyCode;
if(!isNumber(keyCode)){
$('p').html("只能輸入數字");
return false;
}else{
$('p').html("");
}
};
function isNumber(keyCode){
if((keyCode>=48)&&(keyCode<=57))
return true;
if((keyCode>=96)&&(keyCode<=108))
return true;
if(keyCode == 8)
return true;
return false;
}; </script>