Должны ли мы использовать обработчик событий «input» для окна поиска автозаполнения JavaScript?

Я пытаюсь различить различное использование,,,,keydownkeypresskeyupinputchange событие в JavaScript.

Если это окно поиска автозаполнения 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/)

Ответы на вопрос(1)

Ваш ответ на вопрос