我试图区分JavaScript 中keydown
, keypress
, keyup
, input
,change
事件的不同用法。
如果是 JavaScript 自动补全搜索框,是不是一定要使用input
事件处理程序?
原因是:
在
change
用户按下 Enter 或离开该输入框(通过 Tab 键或单击输入框外部)之前,不会调用事件处理程序,因此change
当用户再输入一个时,该事件可能不适合提出建议的目的字符到输入框。事件处理程序可用于将
keydown
击键“添加”到搜索词中,但是对于 CTRL-v 或 CMD-v(在 Mac 上)来粘贴它,如果我们粘贴这样的词,我们无法真正得到keyCode
一个就像hello
在搜索框中一样——因为只有一个按键用于 CTRL,一个按键用于v
, 而不是hello
——但是我们可以使用输入框的value
属性来获取值——但是,如果用户使用鼠标来右键单击并选择“粘贴”以将文本添加到框 - 在这种情况下我们应该,或者我们可以使用鼠标事件处理程序来查看value
属性?处理这么低级别的键盘和鼠标实在是太乱了。
所以input
事件处理程序似乎恰好符合确切的目的,因为任何值更改,input
都会调用事件处理程序。这就是input
事件处理程序如此重要和有用的原因。
我们仍然需要keydown
事件处理程序,因为如果用户按下向下箭头键在可能的项目列表中向下移动怎么办?(可能还有 ESC 使自动完成建议框消失)。在这些情况下,不会调用事件input
处理程序和事件处理程序,并且事件对这些情况很有用。change
keydown
上述概念是否正确,主要是为了理解input
事件?
(用于理解事件处理程序被称为的 jsfiddle:http: //jsfiddle.net/jYsjs/)