键盘事件event.keyCode ,event.which ,event.charCode

来源:互联网 发布:linux编译工具链 编辑:程序博客网 时间:2024/03/29 15:02

javascript判断是否按回车键

<input id="chatMsg" name="chatMsg" type="text" size="90" onkeypress="enterHandler(event);"/>

 

function enterHandler(event)

{//获取用户单击键盘的“键值”

var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;

//如果是回车键

if (keyCode == 13){

sendRequest();}

}


onkeyup,onkeydown,onkeypress
在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress、onkeydown、onkeyup三个事件进行出来。该三个事件的执行顺序如下:onkeydown > onkeypress >onkeyup。在一般情况下,采用三种键盘事件均可对键盘输入进行有效的响应。当在实际使用中,会发现这几者有些不同的差别。   


键盘事件包括keydown、kepress和keyup三种,每次敲击键盘都会(依次?)触发这三种事件:


 
       1、keypress事件不能对系统功能键(例如:后退、删除等,其中对中文输入法不能有效响应)进行正常的响应,keydown和onkeyup均可以对系统功能键进行有效的拦截,但事件截获的位置不同,可以根据具体的情况选择不同的键盘事件;


 
       2、keypress事件的keyCode对字母的大小写敏感,而keydown、keyup事件不敏感;


3、keypress事件的keyCode无法区分主键盘上的数字键和副键盘数字键的,而keydown、keyup的keyCode对主副键盘的数字键敏感。


        keydown和keyup是比较低级的接近于硬件的事件,通俗的理解是这两个事件可以捕获到你敲击了键盘中某个键;而keypress是相对于字符层面的较为高级点的事件,这个事件能够捕捉到你键入了哪个字符。可以这样理解,如果你敲击了A键,keydown和keyup事件只是知道你敲击了A键,它并不知道你敲的是大写的A(你同时按下了Shift键)还是敲的是小写a,它是以"键"为单位,你敲入了大写的A,它只是当成你敲下了shift和A两个键而已,但是keypress可以捕捉到你是敲入的大写的A还是小写的a.   
  
        在介绍Prototype中Event对象前先介绍一下浏览器中的事件模型,浏览器中的事件主要有HTML事件、鼠标事件和键盘事件,前两种事件比较好理解,这里主要解释一下键盘事件以及它在IE和firefox中的区别.   
  
        还要理解一个概念是键盘中的键分为字符(可打印)键和功能键(不可打印),功能键包括Backspace, Enter, Escape, the arrow keys, Page Up, Page Down, and F1 through F12 等   
  
        下面说一下键盘事件的具体使用方法,   
  
        键盘事件的event对象中包含一个keyCode属性,IE中只有这一个属性,当为keydown和keyup 事件是,keycode属性表示你具体按下的键(也称为virtual keycode),当捕捉的是keypress事件时keyCode属性指的是你键入的字符(character code)   
  
        在firefox中情况有些不同,event对象包含一个keyCode属性和一个charCode属性,keydown和keyup事件的时候,keyCode表示的就是你具体按的键,charCode为0;当捕捉的是keypress事件时,keyCode为0,charCode指的是你按下的字符   
  
        注意:功能键不会触发keypress事件,因为keypress对应的就是可打印的字符,但是有一点IE和FF 中的区别,你按下一个字符键的同时按下alt键,在IE中不触发keypress事件,但是在FF中可触发,我发现在IE中按下ctrl键的时候只有按下q键会触发事件其他的要么不会触发事件,要么被浏览器IE自身捕获了,例如你按下ctrl_A,全选某个东西,你按ctrl_S保存文件,但是在FF中就好多了,事件都是先传递到网页,再向外传递   
  
        鉴于IE和FF中的区别,如果你比较懒的话,建议只使用keydow和keyup事件,这两种事件的使用在IE和FF中基本上没有区别,也不要捕获ctrl_A等被浏览器定义为快捷键的事件   

        键盘事件event对象还有三个其他的属性altKey, ctrlKey, and shiftKey 来判断你按下一个键的时候是否按下了alt等键,这三个属性使用比较简单,三种事件都可以使用,也不存在IE和FF的兼容性问题


Netscape/Firefox/Opera中不支持 window.event.keyCode,需要用event.which代替,IE用event.keCode方法获取当前被按下的键盘按键值,而NetScape/FireFox/Opera用的则是event.which。

event.which属性的返回值是Number类型,返回触发当前事件时按下的键盘按键或鼠标按钮。

mousedownmouseup事件中,event.which属性返回的是对应鼠标按钮的映射代码值(相当于event.which)

keypress事件中,event.which属性返回的是输入的字符的Unicode值(相当于event.charCode)

keydownkeyup事件中,event.which属性返回的是对应按键的映射代码值(相当于evenet,keyCode)

验证代码:(链接:http://www.jquery123.com/keypress/)

<!DOCTYPE html><html><head>  <style>fieldset { margin-bottom: 1em; }input { display: block; margin-bottom: .25em; }#print-output {  width: 100%;}.print-output-line {  white-space: pre;  padding: 5px;  font-family: monaco, monospace;  font-size: .7em;} </style>  <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script></head><body>  <form>  <fieldset>    <label for="target">Type Something:</label>    <input id="target" type="text" />  </fieldset></form><button id="other">  Trigger the handler</button><script src="http://api.jquery.com/resources/events.js"></script> <script>var xTriggered = 0;$("#target").keypress(function(event) {//keydown、keyup验证方法相同  if ( event.which == 13 ) {     event.preventDefault();   }   xTriggered++;   var msg = "Handler for .keypress() called " + xTriggered + " time(s).";  $.print( msg, "html" );  $.print( event );}); $("#other").click(function() {  $("#target").keypress();});</script> </body></html>



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 租完房子后悔了怎么办 通过中介买房产生纠纷怎么办 天津公租房资格证到期怎么办 买大房子后悔了怎么办 公款私存了该怎么办 外地人怎么办身份证在北京东城区 申请公租房有车怎么办 租了公租房辞职怎么办 申请公租房收入明细没有怎么办 杭州公租房满3年怎么办 小学寄读不转学籍手续怎么办 炸东西的油糊了怎么办 赠送面积为违建怎么办 执法不管违建我怎么办 司法考试毕业院校写错了怎么办 家具店西安一直拖着不交货怎么办 派出所私自迁移了我家户口怎么办? 退房子不退押金怎么办 租房子中介不退押金怎么办 租房子押金不退怎么办 外地人签户口到武汉怎么办 开发商不给办土地证怎么办 房间里的油烟味怎么办 现金借款app还不了款怎么办 学校不允许实习生自己租房怎么办 盯盯拍开不了机怎么办 向私人借钱不还怎么办 微信好友借钱不还怎么办 支付宝借不了钱怎么办 支付宝借条关了怎么办 qq群不小心解散了怎么办 qq群解散了照片怎么办 出租屋没窗户很闷怎么办 二手房交税后房主不卖怎么办 二房东收不到租拖欠房租怎么办 房东不给换门锁怎么办 租房到期房东联系不到租客怎么办 廉租房名下有车怎么办 路边停车收忘记交费怎么办 考编忘记交费了怎么办 深圳公租房入库了接下来怎么办