onkeyup,onkeydown和onkeypress的区别介绍

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则是输入流被系统处理后发生的。

(0)

相关推荐

  • javascript KeyDown、KeyPress和KeyUp事件的区别与联系

    KeyDown:在控件有焦点的情况下按下键时发生. KeyPress:在控件有焦点的情况下按下键时发生. KeyUp:在控件有焦点的情况下释放键时发生. 1.KeyPress主要用来接收字母.数字等ANSI字符 KeyDown 和 KeyUP 事件过程通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键 2.KeyPress 只能捕获单个字符 KeyDown 和KeyUp 可以捕获组合键. 3.KeyPress 不显示键盘的物理状态(SHIFT键),而只是传递一个字符.KeyPr

  • winform模拟鼠标按键的具体实现

    今天朋友说被他们公司的学习网站恶心到了,下班后要他看学习资料,看完点下一页,而且一页必须停留多少时间才能点击下一页,想不看都不行,于是晚上我突发奇想要给他做一个模拟鼠标按键的程序,可以让鼠标定时间隔触发单击,顺便做下程序最小化到右下角. 首先要引用下user32.dll文件,电脑里就有,C:\Windows\System32搜索下出来了,复制出来放到debug目录下就行. 以下是解决方案代码 复制代码 代码如下: [DllImport("user32.dll", CharSet = C

  • C# winform编程中响应回车键的实现代码

    本文介绍在使用C#进行窗体(WinForm)编程时,如何设置在窗口上按回车键的响应事件,或者说要响应按钮. 在窗体上按回车键,我们可以设置程序触发一些事件.这些事件都要通过窗体的AcceptButton这个属性来进行绑定. 在窗体的Load函数中,我们设置this.AcceptButton,这里的this表示是窗体对象本身.而AcceptButton即响应Enter回车键的按钮.它的值为当前窗体中的一个Button类型的控件的名称. 复制代码 代码如下: private void Form1_L

  • winform拦截关闭按钮触发的事件示例

    用户关闭软件时,软件一般会给"是否确认关闭"的提示.通常,我们把它写在FormClosing 事件中,如果确定关闭,就关闭:否则把FormClosingEventArgs 的 Cancel 属性设置为 true,就取消了该窗体的关闭. 如果该窗体是主窗体,我们想在该窗体关闭时关闭整个应用程序,会遇到至少两种情况: (1)该窗体同时是启动窗体,即它是应用程序中所有窗体的父类,则整个应用程序会被关闭. (2)如果该窗体不是启动窗体,比如我们做了一个欢迎窗体,则应用程序中所有窗体的父类就是这

  • C# WinForm程序完全退出的问题解决

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出: 3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题: 4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制

  • winform 使用Anchor属性进行界面布局的方法详解

    每个控件的定位方法: 一.使用Anchor: Anchor分为Left.Top.Right.Bottom四个属性. 它们的含义如下: Top--表示控件中与父窗体(或父控件)相关的顶部应该保持固定. Bottom--表示控件中与父窗体(或父控件)相关的底边应该保持固定. Left--表示控件中与父窗体(或父控件)相关的左边缘应该保持固定. Right--表示控件中与父窗体(或父控件)相关的右边缘应该保持固定. 一般控件默认为Left | Top,定位根据为左上方的边界.控件的Anchor为:To

  • jquery keypress,keyup,onpropertychange键盘事件

    起初用js 的onkeyup事件,但始终没能触发.该事件不知道别的什么地方监视了,js的事件有传递,也可以阻断,蛮麻烦,情况太多.找了好久,终于找到了一种解决方案,通过onpropertychange事件可以迎刃而解. 复制代码 代码如下: $("#textboxID").bind("onpropertychange", function(){ //alert( $(this).text() ); //自动截取的逻辑代码 }); firefox没有onpropert

  • 解决C# winForm自定义鼠标样式的两种实现方法详解

    第一种:(调用系统API)首先引入两个命名空间 复制代码 代码如下: using System.Runtime.InteropServices;using System.Reflection; 导入API 复制代码 代码如下: [DllImport("user32.dll")]public static extern IntPtr LoadCursorFromFile(string fileName);[DllImport("user32.dll")]public

  • WinForm中KeyDown,KeyPress和KeyUp的顺序与区别解析

    WinForm中的键盘按键有KeyDown,KeyPress和KeyUp事件.那么它们的顺序以及区别在哪里呢?本文就此作出如下分析: 一.顺序: 根据MSDN所讲,三者的顺序是:KeyDown>KeyPress>KeyUp. 二.区别: KeyDown和KeyPress很接近,都是在按键按下时候先后发生.KeyUp是放掉某个键之后发生的事件. 三.KeyDown和KeyPress: KeyDown的事件中属性是KeyEventArgs,其中包含三个重要属性: 1)KeyCode(返回一个Key

  • javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick

    这里给出一段测试代码: <script type="text/javascript"> document.onkeydown = function(){ document.getElementById("test").innerHTML += "keydown<br/>"; } document.onkeyup = function(){ document.getElementById("test").

随机推荐