首页 > 代码库 > 检测键盘按键(三)——keypress和keydown、keyup
检测键盘按键(三)——keypress和keydown、keyup
keypress:在IE和chrome中主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符。
在IE中Esc有值,Chrome中不能触发。
FF都可以触发keypress,除了Alt、Ctrl、Shift键。
keypress可以捕获组合键,比如当用户按下shift + 1时,keypress是对这个按键事件进行解析后返回一个可打印的“!”字符,而keydown只能
输出1。
对于屏幕可打印字符时,keypress是首选。
keydown:通常可以捕获键盘除了PrScrn所有按键。不能判断单个字符的大小写。因此多用于捕获功能键。
PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
<!DOCTYPE html><HTML><HEAD> <meta charset="utf-8"></HEAD><BODY><script type="text/javascript"> var keystring = "";//记录按键的字符串 function $(s){return document.getElementById(s)?document.getElementById(s):s;} function keypress(e) { var currKey=0,CapsLock=0,e=e||event; currKey=e.keyCode||e.which||e.charCode; CapsLock=currKey>=65&&currKey<=90; switch(currKey) { //屏蔽了退格、制表、回车、空格、方向键、删除键 case 8: case 9:case 13:case 32:case 37:case 38:case 39:case 40:case 46:keyName = "";break; default:keyName = String.fromCharCode(currKey); break; } keystring += keyName; } function keydown(e) { var e=e||event; var currKey=e.keyCode||e.which||e.charCode; if((currKey>7&&currKey<14)||(currKey>31&&currKey<47)) { switch(currKey) { case 8: keyName = "[退格]"; break; case 9: keyName = "[制表]"; break; case 13:keyName = "[回车]"; break; case 32:keyName = "[空格]"; break; case 33:keyName = "[PageUp]"; break; case 34:keyName = "[PageDown]"; break; case 35:keyName = "[End]"; break; case 36:keyName = "[Home]"; break; case 37:keyName = "[方向键左]"; break; case 38:keyName = "[方向键上]"; break; case 39:keyName = "[方向键右]"; break; case 40:keyName = "[方向键下]"; break; case 46:keyName = "[删除]"; break; default:keyName = ""; break; } keystring += keyName; } $("content").innerHTML=keystring; } function keyup(e) { $("content").innerHTML=keystring; } document.onkeypress=keypress; document.onkeydown =keydown; document.onkeyup =keyup;</script><input type="text" /><input type="button" value="清空记录" onclick="$(‘content‘).innerHTML = ‘‘;keystring = ‘‘;"/><br/>请按下任意键查看键盘响应键值:<span id="content"></span></BODY></HTML>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。