对于JavaScript自动完成搜索框,我们必须使用"input"事件处理程序吗?

14 浏览
0 Comments

对于JavaScript自动完成搜索框,我们必须使用"input"事件处理程序吗?

我试图区分JavaScript中keydownkeypresskeyupinputchange事件的不同用法。

如果是一个JavaScript的自动完成搜索框,我们是否必须使用input事件处理程序?

原因是:

  1. change事件处理程序只有在用户按下Enter键或离开输入框(通过Tab键或点击输入框外部)时才会被调用,因此change事件无法在用户输入一个或多个字符到输入框时提供建议的目的。
  2. keydown事件处理程序可以用于将按键添加到搜索词中,但是对于CTRL-vCMD-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/

0