input/change/composition/keydown事件详解
时间:2022-07-24
本文章向大家介绍input/change/composition/keydown事件详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
你知道这些事件都在什么时候触发么?
30秒速答:
input
事件在用户行为导致input | select | textarea
的value
改变时触发。
change
事件在用户行为导致input | select | textarea
的value
改变 && (失去焦点
|| 回车
)时触发。
composition
事件在输入法编辑器
输入字符后触发。
keydown
事件在按下键盘按键后触发。
扩展阅读
详细介绍各个事件的不同。
input
input
是理想的文本内容变化监听事件,可以在内容改变后实时触发。
IE9
以下浏览器不支持input
事件,可以使用IE
特有的propertychange
事件替代。
这两个事件的区别为:
-
input
事件仅在用户输入导致value
属性变化时触发,通过js
改变属性无法触发。 -
propertychange
事件当任何属性改变都会触发。
change
change
事件触发时机根据表单元素type
与用户交互决定。
- 对于
type
为radio | checkbox
的input
,当元素:checked
时触发(通过点击或者使用键盘) - 对于需要
选择
的表单元素,当用户完成提交时触发,例如:
- 点击
select
中的选项。 - 从
input[type="date"]
选择了一个日期。 - 通过
input[type="file"]
上传了一个文件。
- 对于
textarea
或者input[type="text"]
,当文本内容变化
&& (失去焦点
||回车
)时触发。
React中的
onChange
事件行为同原生的input
事件相同
composition
由compositionstart
、compositionupdate
、compositionend
组成的复合事件。会在输入法编辑器
输入时触发。
对于中文来说,即从输入字母
出现中文输入法到输出中文
的过程。
这三个事件分别会在输入法输入时/输入中/输入完成触发。
如上图,输入数字并不会触发composition
,有输入法编辑器
时才会触发。
keydown
从按钮按下到弹起,会依次触发keydown
、keypress
、keyup
事件。
- 其中
keydown
会在按下任意字符后触发,keyup
会在按键弹起后触发(chrome下中/英
切换按钮弹起不会触发keyup
)。 -
keypress
会在按下可显示内容(数字/字母/符号)后在keydown
之后触发。shift | meta
等不会产生实际内容的按钮不会触发keypress
。
keypress
事件已经不被推荐使用,可以使用beforeinput
替代。
事件触发顺序
对于input[type="text"]
当没有输入中文时,事件触发顺序为:
- keydown
- keypress
- beforeinput
- input
- keyup
- 失去焦点 change
当使用输入法输入w
,并最终输出我
时,事件触发顺序如图:
- HDUOJ----1181 变形课
- 正确的Win主机网站伪静态设置方法
- HDUOJ----(1084)What Is Your Grade?
- HDUOJ------(1272)小希的迷宫
- HDUOJ ---1269迷宫城堡
- HDUOJ---1213How Many Tables
- hduoj----(1033)Edge
- HDUOJ----(1031)Design T-Shirt
- HDUOJ----(1030)Delta-wave
- 身份切换脚本,免登入切换权限的利器
- HDUOJ---What Are You Talking About
- HDUOJ-----(1251)统计难题
- HDUOJ-----1541 Stars
- HDUOJ--------(1198)Farm Irrigation
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- poiAndEasyExcel学习(四)
- 使用OpenCV为视频中美女加上眼线
- 论文精读|5th|YOLO v3的新特性|目标检测|附下载
- 算法集锦(9)|自动驾驶|道路图像增强算法
- 基于OpenCV实现海岸线变化检测
- 爬取bilibili再也不用头疼了,bilibili-api一步到位!
- 「React」很多人在滥用 state
- == 与equals和hashCode与equals
- 算法集锦(10)| 自动驾驶、机器人 | 物品图像动态检测算法实现
- Hystrix仪表盘
- Centos7 Nginx的SSL证书安装
- 算法集锦(11)| 自动驾驶 | 基于HOG和SVM的车辆识别算法
- 剑指offer(一):找出数组中重复的数字
- 剑指offer(二):不修改数组找出重复的数字
- 漫画:什么是树状数组?