Как получить правильный язык и регистр для нажатия клавиш в слушателе событий JS? - PullRequest
1 голос
/ 20 октября 2011

У меня есть следующий прослушиватель событий jQuery для нажатия клавиши в текстовом поле:

$("#theInput").keyup(function (e) {
    var charCode = e.keyCode || e.which;
    alert(charCode);
    /* rest of the code */
});

Моя проблема в том, как точно получить код для набранной буквы. Например, если я нажму клавишу «а», она выдаст предупреждение «65» - независимо от того, было ли это «а» или «А». Если я переключаю язык ввода на иностранный (например, японский, китайский, тайский) и нажимаю клавишу «a», он все равно возвращает «65», а не другой код, чтобы сообщить мне иностранный символ.

Есть ли способ исправить это, чтобы он вывел правильный язык и регистр букв?

Ответы [ 2 ]

6 голосов
/ 20 октября 2011

Читали ли вы jQuery doco о том, как работают события keyup и keydown? Предполагается, что они возвращают код ключа (а не код символа), не обращая внимания на то, был ли сдвиг в то время был вниз keyup позволяет различать разные клавиши, связанные с одним и тем же символом, поэтому вы можете определить, была ли введена цифра с цифровой клавиатуры или нет.

Требуемое событие - нажатие клавиши , , которое возвращает код символа, который различает верхний и нижний регистр. Хотя я и сказал, что я не уверен, как это работает для иностранных языков, и в любом случае весь подход не позволяет пользователю вводить другой текст путем вставки из буфера обмена, так что это еще кое-что, что вам нужно учитывать.

(Кстати, jQuery нормализует свойство event.which, поэтому вам не нужно сначала проверять event.keyCode.)

0 голосов
/ 20 октября 2011

Ключи одинаковы независимо от языка. Вы можете получить регистр с помощью .shiftKey, но самый надежный способ - сохранить действительные символы:

$('#input').keyup(function(e){
  var character = this.value.slice(-1)
  console.log(character)
})

Это слишком упрощено, поскольку текст может быть напечатан где-то кроме конца. Вам нужно найти позицию курсора, а затем получить соответствующий символ.

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