Все, что я нашел об этом, это то, что между различными веб-браузерами существуют несоответствия, когда дело доходит до кодов клавиш.коды клавиш в разных браузерах? jquery
У меня есть следующий код, который отлично работает при нажатии ввода в Safari, Opera и Chrome, но не в Firefox.
Я использую FF 9.0.1
Вот два фрагмента кода, где происходит проблема:
1)
//Post something
$('#postDiv').on('keydown', '#posttext', function(e) {
if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
post($(this));
}
});
2)
//Comment on a post
$('.commenttext').live('keydown', function(e) {
if ((e.keyCode == 13 || e.which == 13) && !event.shiftKey) {
comment($(this));
}
});
Обе функции Арен» т даже называется.
Заранее спасибо :-) Dennis
EDIT 1
Я сделал еще несколько испытаний только с e.which и заметил, что это работает, когда я выхожу вне & & event.shiftKey! - очевидно, FF не знает этой команды. Есть ли альтернатива этому? Я хотел бы, чтобы пользователь мог нажать shift + enter, не отправляя сообщение. Я уже пробовал условие, если (e.which == 13 & & e.which! = 16), но безрезультатно.
EDIT 2 - РЕШЕНИЕ
Прежде всего спасибо за все ответы! Конечно, это должен был быть e.shiftKey, а не event.shiftKey! Теперь он работает во всех браузерах (единственное, что я еще не пробовал, это IE).
Просто используйте 'event.which' для согласованного результата в браузерах. https://developer.mozilla.org/en/DOM/event.charCode#Notes –
Почему вы задали этот вопрос, если он уже разрешен в вашем другом вопросе? (используйте только 'e.which', jQuery нормализует его.) –
Постарайтесь связать с ключом документ, а затем идентифицируйте элемент с помощью $ (this) .attr ('id'). Может быть, это немного помогает? –