2010-12-11 1 views
19

Почему не обнаружено обратное пространство с использованием события jquery keypress?Почему не обнаружено обратное пространство, используя событие jquery keypress?

$("#field").keypress(function(event){alert(event.which);}); 
+0

Это отлично работает для меня в FF, но не в IE (8). Какой браузер вы используете? –

ответ

19

«нажатие клавиши» событие (в его первоначальном виде IE, а в Safari/Chrome) о фактическом характере добавляется в текстовое поле. Клавиша backspace явно не добавляет новый символ к значению поля, поэтому он не вызывает события нажатия клавиши.

Firefox и Opera немного более волей-неволей о создании событий ввода.

PPK (quirksmode) considers the IE and Webkit behaviors to be the sensible ones, и я в значительной степени согласен.

+0

Это может быть разумно, но это уменьшает полезность события IMO. Возможно, это просто привычка, но я часто использую keypress (на других языках, где событие срабатывает, если нажатая клавиша имеет значение ASCII), ловушка BS-ключа делает такие вещи, как отключить кнопки, когда пользователь возвращает весь текст из поля ввода , – BobRodes

19

Попробуйте использовать keydown и keyup вместо IE.

Javascript e.keyCode doesn't catch Backspace/Del in IE

+2

точно см. Это http://jsfiddle.net/EZqMA/ –

+0

Это действительно классный сайт, Эрик. Сегодня я чему-то научился. – mdarwi

+1

@ Eric IMO лучше использовать событие 'keyup', как оно происходит после отпускания ключа, и' .value' вернет новое значение. –

0

OnKeyUp только будет делать все ключевые обнаружения клавиатуры в хроме ..

Смежные вопросы