赞
踩
你知道这些事件都在什么时候触发么?
30秒速答:
input
事件在用户行为导致input | select | textarea
的value
改变时触发。
change
事件在用户行为导致input | select | textarea
的value
改变 && (失去焦点
|| 回车
)时触发。
composition
事件在输入法编辑器
输入字符后触发。
keydown
事件在按下键盘按键后触发。
详细介绍各个事件的不同。
input
是理想的文本内容变化监听事件,可以在内容改变后实时触发。
IE9
以下浏览器不支持input
事件,可以使用IE
特有的propertychange
事件替代。
这两个事件的区别为:
input
事件仅在用户输入导致value
属性变化时触发,通过js
改变属性无法触发。
propertychange
事件当任何属性改变都会触发。
change
事件触发时机根据表单元素type
与用户交互决定。
type
为radio | checkbox
的input
,当元素:checked
时触发(通过点击或者使用键盘)选择
的表单元素,当用户完成提交时触发,例如:点击select
中的选项。
从input[type="date"]
选择了一个日期。
通过input[type="file"]
上传了一个文件。
textarea
或者input[type="text"]
,当文本内容变化
&& (失去焦点
|| 回车
)时触发。React中的
onChange
事件行为同原生的input
事件相同
由compositionstart
、compositionupdate
、compositionend
组成的复合事件。会在输入法编辑器
输入时触发。
对于中文来说,即从输入字母
出现中文输入法到输出中文
的过程。
这三个事件分别会在输入法输入时/输入中/输入完成触发。
如上图,输入数字并不会触发composition
,有输入法编辑器
时才会触发。
从按钮按下到弹起,会依次触发keydown
、keypress
、keyup
事件。
其中keydown
会在按下任意字符后触发,keyup
会在按键弹起后触发(chrome下中/英
切换按钮弹起不会触发keyup
)。
keypress
会在按下可显示内容(数字/字母/符号)后在keydown
之后触发。shift | meta
等不会产生实际内容的按钮不会触发keypress
。
keypress
事件已经不被推荐使用,可以使用beforeinput
替代。
对于input[type="text"]
当没有输入中文时,事件触发顺序为:
当使用输入法输入w
,并最终输出我
时,事件触发顺序如图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。