.Код ключа не работает на некоторых клавиатурах?

#javascript #keyboard #keypress #keycode

#javascript #клавиатура #нажатие клавиши #код ключа

Вопрос:

Я обнаруживаю нажатую клавишу ( <tab> в данном случае) внутри поля ввода текста. Пока я пишу, все в порядке. Но когда я тестирую на другом компьютере (ноутбуке с той же версией Firefox), он возвращает «Undefined». Почему?

Например: когда я нажал <tab> клавишу, она должна вернуться 9 . Вместо этого он возвращает Undefined или 0 на некоторых других машинах. Почему?

Используя следующий код JS:

 function keyHandler(e) {
  var charCode;
  if (e amp;amp; e.which) {
      charCode = e.which;
  } else if (window.event) {
      e = window.event;
      charCode = e.keyCode;
  }

  if (charCode == 9) {
    bla.. bla.. bla.. bla.. 
  }
}
  

Что меня удивляет, так это то, что он работает на моем pc , но не на другом laptop . У клавиатур ноутбуков разные коды клавиш?

или почему?

Ответ №1:

попробуйте:

 function keyHandler() {
var e = arguments[0] || window.event,
    charCode = e.which || e.keyCode || e.charCode;

  if (charCode == 9) {
    bla.. bla.. bla.. bla.. 
  }
  else {
  console.log( charCode );
  }
}
  

или просто используйте jQuery

Комментарии:

1. Должно быть function keyHandler(e) .. верно? Также он не работает в IE: (

2. Нет, e переменная определяется внутри функции и присваивается первому аргументу ( arguments[0] ) (или в случае IE, window.event , потому arguments[0] что будет undefined ), на какую версию IE вы ссылаетесь?

3. присваивается первому аргументу (аргументы [0])?? Итак, пожалуйста, каким будет вызов функции со стороны элемента? Я имею в виду, не будет ли этого onkeypress="keyHandler(event);" ???

4. document.onkeyup = keyHandler; или, если вы хотите, чтобы он работал только тогда, когда элемент сфокусирован, дайте элементу идентификатор и document.getElementById("elementid").onkeyup = keyHandler обратите внимание: нажатие клавиши, а не нажатие клавиши. Обратите внимание, что с jQuery это было бы намного проще, поскольку вам не нужно думать о различиях в браузерах в простых задачах.

5. document.getElementById("elementid").onkeyup = keyHandler; и ввод текста с <input id="elementid" type="text" /> помощью не работает даже в Firefox: (