教程集 www.jiaochengji.com
教程集 >  脚本编程  >  javascript  >  正文 js中onkeyup、onkeydown与onkeypress的区别

js中onkeyup、onkeydown与onkeypress的区别

发布时间:2015-02-20   编辑:jiaochengji.com
本文详细介绍了onkeyup、onkeydown与onkeypress三者在用法上的区别,通过实例了解三者在响应事件时的不同,有需要的朋友参考学习下。

说明:
onkeyup、onkeydown与onkeypress三者在事件的响应上各有不同:
onkeydown 、onkeypress事件响应时,输入的字符并没有被系统接受,而响应onkeyup时,输入流已经被系统接受
 
msdn上有三者的区别介绍,这里摘抄一下:
名称 说明
onkeypress
这个事件在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。

onkeyup
这个事件在用户放开任何先前按下的键盘键时发生。

onkeydown
这个事件在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。

例子:
 

复制代码 代码示例:
<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”,则失去焦点,页面重新载入。

测试发现onkeydown 事件最先执行,其次是onkeypress,最后是onkeyup;onkeydown 和onkeypress会影响onkeyup的执行。
三个事件同时存在时,都是alert的话,只会弹出2个alert,up事件的alert不会弹出。

总结:
onkeydown 、onkeypress事件响应时输入的字符并没有被系统接受,而响应onkeyup时,输入流已经被系统接受。
由于onkeydown 比onkeypress先执行,onkeydown 触发时输入流正要进入系统,即onkeydown 事件一完,输入流就进入了系统,无法改变。
所以通过onkeydown 事件可以改变用户是按了哪个键;
而onkeypress事件则是在输入流进入系统后触发的,但输入流暂未被系统处理,此时已经不能改变输入流了;
onkeyup则是输入流被系统处理后发生的。

就是这些了,希望以上的介绍有助于大家理解onkeyup、onkeydown与onkeypress的区别,为以后灵活应用这几个事件函数带来帮助。

您可能感兴趣的文章:
js中onkeyup、onkeydown与onkeypress的区别
键盘事件keydown,keypress,keyup有哪些区别
JavaScript键盘事件深入解析
javascript键盘事件用法总结
如何让Asp.net TextBox控件只允许输入数字
用于输入验证的一些正则表达式
Asp.net TextBox控件只允许输入数字
javascript 限制只允许输入数字的几种方法
TextBox限制只能输入数字的方法
正则表达式实例(中文、字母和数字)分享

[关闭]
~ ~