Jquery 什么';keyup、keydown、keypress和input事件之间的区别是什么?

Jquery 什么';keyup、keydown、keypress和input事件之间的区别是什么?,jquery,input,jquery-events,Jquery,Input,Jquery Events,我一直在努力理解jQuerykeypress、keydown、keydup和输入事件。但我发现他们很困惑。有人能指出确切的区别吗?我还想知道,当用户粘贴一段文本时,是否会触发所有这些事件。根据: 当浏览器注册键盘输入时,keypress事件被发送到元素。这与keydown事件类似,只是修改键和非打印键(如Shift、Esc和delete)触发了keydown事件,而不是keypress事件。根据平台和浏览器的不同,这两个事件之间可能会出现其他差异 当用户释放键盘上的键时,keyup事件被发送到元

我一直在努力理解jQuery
keypress
keydown
keydup
输入事件。但我发现他们很困惑。有人能指出确切的区别吗?我还想知道,当用户粘贴一段文本时,是否会触发所有这些事件。

根据:

当浏览器注册键盘输入时,keypress事件被发送到元素。这与keydown事件类似,只是修改键和非打印键(如Shift、Esc和delete)触发了keydown事件,而不是keypress事件。根据平台和浏览器的不同,这两个事件之间可能会出现其他差异

当用户释放键盘上的键时,keyup事件被发送到元素

oninput事件它是一个在输入更改时触发的事件

但是,低于9的IE版本不支持输入事件。在这种情况下,您可以使用专有的事件onpropertychange,它的作用与oninput相同


但是在您的情况下,您可以同时使用粘贴更改事件。您也应该使用change,因为paste只发生在支持显式粘贴的浏览器上。

在我测试的leat on chrome(63)上,按键和向下键在事件处理之前被触发,因此按键事件还没有改变输入的值。另一方面,输入是在之后处理的。这意味着如果您访问输入值,您将在按键和按键事件侦听器上获得上一个值。@RSinohara-这很有趣-我在Linux上使用Chromium-“68.0.3440.106”(64位)。我看到的行为正好相反。如图所示。如果您试图听到用户按enter键触发某些操作,则需要使用keypress或keyup,因为enter不会更改字段值(因此不会触发输入)。或者,在keydown内,您可以使用setTimeout(()=>e.target.value,0)在添加键后获取值(如果您使用的是vanilla js)@RSinohara使用
keyup
事件更新输入值