对于JavaScript自动完成搜索框,我们必须使用"input"事件处理程序吗?
- 论坛
- 对于JavaScript自动完成搜索框,我们必须使用"input"事件处理程序吗?
14 浏览
对于JavaScript自动完成搜索框,我们必须使用"input"事件处理程序吗?
我试图区分JavaScript中keydown
、keypress
、keyup
、input
、change
事件的不同用法。
如果是一个JavaScript的自动完成搜索框,我们是否必须使用input
事件处理程序?
原因是:
change
事件处理程序只有在用户按下Enter键或离开输入框(通过Tab键或点击输入框外部)时才会被调用,因此change
事件无法在用户输入一个或多个字符到输入框时提供建议的目的。keydown
事件处理程序可以用于将按键添加到搜索词中,但是对于CTRL-v或CMD-v(在Mac上)进行粘贴时,如果我们将一个单词如hello
粘贴到搜索框中,我们无法逐个获取keyCode
,因为只有一个keydown
用于CTRL和一个keydown
用于v,而不是hello
,但我们可以使用输入框的value
属性来获取值,但是如果用户使用鼠标右键点击并选择“粘贴”来添加文本到输入框中,这种情况下我们应该或者可以使用鼠标事件处理程序来查看value
属性吗?处理这种低级的键盘和鼠标问题太麻烦了。
因此,input
事件处理程序似乎正好符合要求,因为任何值的变化都会调用input
事件处理程序。这就是为什么input
事件处理程序很重要和有用的原因。
我们仍然需要keydown
事件处理程序,因为如果用户按下向下箭头键来浏览可能项的列表(可能会按下ESC键使自动完成建议框消失),这些情况下input
事件处理程序和change
事件处理程序将不会被调用,keydown
事件将对这些情况很有用。
以上概念是否正确,主要是为了理解input
事件?
(一个用于理解调用哪些事件处理程序的jsfiddle链接:http://jsfiddle.net/jYsjs/)