Я запутался в различном поведении нажатия клавиши, нажатия клавиши и нажатия клавиши. Кажется, я пропустил важную часть документации, объясняющую тонкости и нюансы этой троицы. Может ли кто-нибудь помочь мне выяснить, какой документ мне нужно прочитать, чтобы более эффективно использовать эти события? Если вам нужны подробности, см. ниже.
@o.v.: вы просили меня показать код, но на самом деле это не конкретная проблема в коде, которую я пытаюсь решить. Я пытаюсь разобраться в поведении этих обработчиков событий и прошу кого-нибудь, кто в них разбирается, указать мне хороший документ.
Я использую jQuery для создания формы ввода и вставки ее в свой документ. Он работает просто отлично, в основном. Я хочу, чтобы форма реагировала на клавиатуру, как и большинство других форм ввода, которые я вижу: клавиша esc должна закрыть форму так же, как нажатие кнопки отмены, и потому что на форме есть <textarea>
, cmd + enter должны быть аналогичны нажатию кнопки OK. Кажется достаточно простым использовать событие keypress. Проблема в том, что Chrome не вызывает мой обработчик нажатия клавиши для клавиши esc или cmd + enter. Он срабатывает для ctrl + enter и option + enter и для буквенно-цифровых символов, но не для cmd kbd> + ввод.
Поэтому вместо этого я буду использовать keyup. Я получаю keyup для esc и keyup для cmd и keyup для < kbd>введите, отлично. Но я не получаю keyup для клавиши enter, пока удерживаю cmd.
В третий раз прелесть, вы можете подумать, что keydown работает, но с keydown вы получаете повторяющиеся клавиши. Я знаю, все, что вам нужно сделать, это отвязать обработчик при первом вызове, но просто кажется странным, что три разных типа событий ведут себя по-разному. Почему это? Есть ли очевидный документ, который я явно не читал?