Javascript e.keyCode не захватывает Backspace/Del в IE
Я пытаюсь поймать нажатие клавиши Backspace и Delete с помощью javascript/jQuery с таким кодом.
$("textarea[name=txt]").keypress(function(e){
var keycode = e.keyCode ? e.keyCode : e.which;
if(keycode == 8){ // backspace
// do somethiing
alert(keycode);
}
if(keycode == 46){ // delete
// do somethiing
alert(keycode);
}
});
Эти строки кода отлично работают в Firefox (3.6.12). Это означает, что предупреждение вызывается при нажатии Backspace или Delete.
Но это не работает в Internet Explorer (8)
Может ли кто-нибудь предложить мне другой способ поймать эти ключевые события для прессы в Internet Explorer?
Ответы
Ответ 1
Если вы хотите поддерживать IE, и вы используете специальные клавиши (например, delete
и backspace
), я предлагаю вместо этого использовать keydown
/keyup
.
Специальные клавиши
Проводник не запускает нажатие клавиши. событие для удаления, завершения, ввода, выхода, функциональные клавиши, домашние, вставки, pageUp/Down и вкладка.
Если вам нужно обнаружить эти ключи, сделайте себе одолжение и найдите их keyCode onkeydown/up и игнорируйте оба параметра onkeypress и charCode.
Вы можете узнать больше о проблемах с браузером Обнаружение нажатий клавиш (Quirksmode).
Ответ 2
Key Code для Backspace примет value = 83, если у нас уже есть несколько символов в текстовом поле.
Key Code будет = 8, если в текстовом поле нет символов NO, и мы пытаемся попасть в Backspace.