onkeyup,onkeydown和onkeypress
onkeyup,onkeydown和onkeypress
onkeyup,onkeydown和onkeypress一、含义
onkeypress
这个事件在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。
onkeyup
这个事件在用户放开任何先前按下的键盘键时发生。
onkeydown
这个事件在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。
二、onkeyup,onkeydown和onkeypress区别
1、三个事件执行顺序为onkeydown -> onkeypress -> onkeyup
2、onkeypress仅能响应数字和字母键,不能对系统功能键进行捕获,而onkeydown和onkeyup事件均可对系统功能键进行响应。
3、onkeypress与另外onkeydown和onkeyup事件所使用的keycode不相同,而且onkeypress事件区分字母大小写但不区分主键盘数字键和小键盘数字键。
4、IE和火狐对这三个事件的处理不同
在IE中,键盘事件的event对象中包含一个keyCode属性,当为keydown和keyup 事件是,keycode属性表示你具体按下的键(也称为virtual keycode),当捕捉的是keypress事件时keyCode属性指的是你键入的字符(character code) 。
在firefox中情况有些不同,event对象包含一个keyCode属性和一个charCode属性,keydown和keyup事件的时候,keyCode表示的就是你具体按的键,charCode为0;当捕捉的是keypress事件时,keyCode为0,charCode指的是你按下的字符。
5、onkeypress 可被理解是被按着的那种状态是keydown 触发造成,keyup 就是弹起来了,释放了。点 onkeypress 时,其实输入的任务还没有完成,所以在此刻打印出来的输入数据时不包含你手上按下的这个键的,所以在这个过程里侦听输入框里的字符数是不可取的。因此做搜索建议suggest时应该选用onkeyup。
三、实例
<html>
<script>
function checkForm(){
if(event.keyCode ==13){
event.keyCode =9;
}
}
</script>
<body>
<form name ="form1">
<input type="text" name = "text1" onkeydown = "checkForm()">
<input type="button" name = "button1" value="按钮">
</form>
</body>
</html>
说明
当按下回车时,焦点从文本框移到按钮上。如果把它换成“onkeypress”,焦点不会转移,也不会失去。但是如果换成“onkeyup”,则失去焦点,页面重新载入。