onkeydown、onkeypress、onkeyup的区别

简介: onkeydown、onkeypress、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”,则失去焦点,页面重新载入。


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


三者在事件的响应上还有一点不同,就是onkeydown 、onkeypress事件响应的时候输入的字符并没有被系统接受,而响应onkeyup的时候,输入流已经被系统接受。由于onkeydown 比onkeypress先执行,再根据上面的例子可以知道,onkeydown 触发的时候输入流正要进入系统,也就是说onkeydown 事件一完,输入流就进入了系统,无法改变。所以通过onkeydown 事件可以改变用户是按了哪个键;而onkeypress事件则是在输入流进入系统后触发的,但输入流暂未被系统处理,此时已经不能改变输入流了;onkeyup则是输入流被系统处理后发生的。

用如下流程图就能够清晰明白三者的运行顺序:

onkeydown---输入流准备进入系统---→onkeypress---输入流已进入系统(未被系统处理)------输入流被系统处理---→onkeyup


相关文章
|
16天前
|
JavaScript 前端开发
JavaScript DOM 操作:解释一下事件冒泡(Event Bubbling)和事件捕获(Event Capturing)。
【4月更文挑战第14天】JavaScript中的事件处理包括冒泡和捕获两个阶段。事件冒泡是从根节点向目标元素逐级向上传播事件,允许在元素内部捕获外部事件。事件捕获则相反,从根节点向下到目标元素,使得外部能捕获内部事件。`addEventListener`方法用于添加事件监听器,通过`useCapture`参数切换冒泡或捕获阶段处理事件,默认为`false`(冒泡阶段)。兼容性考虑,推荐使用`addEventListener`。
17 0
|
5月前
|
Java API 容器
java和VB中按键事件处理:解析 KeyCode、KeyAscii; KeyDown/KeyUp/KeyPress 的关系区别及应用
java和VB中按键事件处理:解析 KeyCode、KeyAscii; KeyDown/KeyUp/KeyPress 的关系区别及应用
事件对象(event)
1.event 就是一个事件对象,写到侦听函数的小括号里,当作形参来看。 2.事件对象只有有了事件才会存在,它是系统给我们自动创建的,不需要我们传递参数。 3.事件对象是我们事件的一系列跟事件相关的数据的集合。比如鼠标点击事件里面就包含了鼠标的相关信息,如鼠标的坐标,如果是键盘事件里面就包含的是键盘事件的信息,如判断用户按下哪个按键。
|
JavaScript 程序员
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
123 0
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
|
Web App开发
第53天:鼠标事件、event事件对象
-->鼠标事件-->event事件对象-->默认事件-->键盘事件(keyCode)-->拖拽效果 一、鼠标事件 onclick ---------------鼠标点击事件oncontextmenu------鼠标右键点击onmouseover --------鼠标移上onmouseout ----...
981 0
第43天:事件对象event
一、事件对象事件:onmouseover、 onmouseout、 onclickevent //事件的对象 兼容写法:var event = event || window.event; event常见属性,如下表: 属性 作用 data 返回拖拽对象的URL字符串(...
867 0