当前位置:   article > 正文

checkbox选中触发事件_input/change/composition/keydown事件详解

input checkbox 点击事件选中与取消

你知道这些事件都在什么时候触发么?

30秒速答:

input事件在用户行为导致input | select | textareavalue改变时触发。

change事件在用户行为导致input | select | textareavalue改变 && (失去焦点 || 回车)时触发。

composition事件在输入法编辑器输入字符后触发。

keydown事件在按下键盘按键后触发。

扩展阅读

详细介绍各个事件的不同。

input

input是理想的文本内容变化监听事件,可以在内容改变后实时触发。

IE9以下浏览器不支持input事件,可以使用IE特有的propertychange事件替代。

这两个事件的区别为:

  • input事件仅在用户输入导致value属性变化时触发,通过js改变属性无法触发。

  • propertychange事件当任何属性改变都会触发。

change

change事件触发时机根据表单元素type与用户交互决定。

  • 对于typeradio | checkboxinput,当元素:checked时触发(通过点击或者使用键盘)
  • 对于需要选择的表单元素,当用户完成提交时触发,例如:
  1. 点击select中的选项。

  2. input[type="date"]选择了一个日期。

  3. 通过input[type="file"]上传了一个文件。

  • 对于textarea或者input[type="text"],当文本内容变化 && (失去焦点 || 回车)时触发。

React中的onChange事件行为同原生的input事件相同

composition

compositionstartcompositionupdatecompositionend组成的复合事件。会在输入法编辑器输入时触发。

对于中文来说,即从输入字母出现中文输入法到输出中文的过程。

这三个事件分别会在输入法输入时/输入中/输入完成触发。

c29f2c41c31cd900da9d99621ab69f01.gif

如上图,输入数字并不会触发composition,有输入法编辑器时才会触发。

keydown

从按钮按下到弹起,会依次触发keydownkeypresskeyup事件。

  • 其中keydown会在按下任意字符后触发,keyup会在按键弹起后触发(chrome下中/英切换按钮弹起不会触发keyup)。

  • keypress会在按下可显示内容(数字/字母/符号)后在keydown之后触发。shift | meta等不会产生实际内容的按钮不会触发keypress

keypress事件已经不被推荐使用,可以使用beforeinput替代。

事件触发顺序

对于input[type="text"]当没有输入中文时,事件触发顺序为:

  1. keydown
  2. keypress
  3. beforeinput
  4. input
  5. keyup
  6. 失去焦点 change

当使用输入法输入w,并最终输出时,事件触发顺序如图:

e6dfe09f21bfc6d010f68a30b375c9e7.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/222941
推荐阅读
相关标签
  

闽ICP备14008679号