набрать символ, кросс-браузер - PullRequest
2 голосов
/ 01 июня 2011

Простой вопрос - Кто-нибудь знает о надежной кросс-браузерной функции для получения символа , набранного из события нажатия клавиши? Я могу написать один из сетки quirksmode, но лучше не изобретать колесо для чего-то такого простого, но такого нестандартного.

Позвольте мне уточнить:

Нет способа сделать это, просто используя event.keyCode или event.which. Общая логика выглядит примерно так:

  • получить код ключа
  • обнаружение сдвига, ctrl
  • если ctrl, игнорировать
  • создать карту кодов клавиш с и без клавиши Shift
    • пример карты {186 : ';', 187 : '=', 188 : ',', ....}
    • нужна отдельная карта для модификатора клавиши Shift
    • карта должна меняться в зависимости от браузера (особенно Safari Mac с такими кодами клавиш, как 60000)
  • если код ключа указан на карте, вернуть отображенный ключ
  • если код ключа отсутствует на карте, нормализовать числа, при необходимости применить клавишу модификатора сдвига, вернуть String.fromCharCode(key)

Это не простое решение, поэтому я ищу готовое:)

Ответы [ 2 ]

4 голосов
/ 01 июня 2011

Готовы ли вы использовать jQuery?

$("input").bind("keydown",function(e){ var value = this.value + String.fromCharCode(e.keyCode); }

Я считаю, что переключение на событие нажатия клавиши решит проблему, упомянутую в вашем комментарии. Будет ли приведенный ниже код соответствовать вашим требованиям?

$("input").bind("keypress",function(e){ var value = this.value + String.fromCharCode(e.keyCode); }
3 голосов
/ 10 сентября 2015

Я задавался вопросом об одном и том же много лет.Недавно мне надоело искать коды клавиш для событий, которые я написал для модуля под названием keysight , который переводит события keypress, keydown и keyup в символы и ключи соответственно.

Пример:

 element.addEventListener("keydown", function(event) {
    var character = keysight(event).char
 })

Он ничего не игнорирует на Ctrl, поэтому вам придется делать это вручную, если хотите.Но он выполняет всю остальную логику, которую вы дали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...