Событие нажатия клавиши не генерируется в Chrome на клавише ENTER?
Мое приложение требует ввода от пользователей, при вводе значения в текстовое поле пользователи нажимают Enter (Return Key), и это вызывает
кнопки onclick. Это отлично работает в IE, FF, но не в Chrome. При входе в хром событие нажатия клавиши не генерируется
Вот мой фрагмент кода
$('#myDiv').keypress(function (e) {
alert("Key pressed");
if (e.keyCode == $.ui.keyCode.ENTER) {
alert("enter pressed");
}
});
Может ли кто-нибудь предоставить информацию об этом?
Ответы
Ответ 1
Метод кросс-браузеров:
$('#myDiv').keydown( function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if(key == 13) {
e.preventDefault();
alert("enter pressed");
}
});
Протестировано в Chrome 24: http://jsfiddle.net/PTauw/1/
Ответ 2
keypress
- это правильное событие для обнаружения того, какой символ был введен (хотя в этом конкретном случае работа с ключом ввода keydown
тоже будет работать). Однако, как получить символ, набранный в событии keypress, несовместим между браузерами, поэтому jQuery нормализуется в свойстве which
. Вот что вы хотите:
$('#myDiv').keypress(function (e) {
alert("Key pressed");
if (e.which == $.ui.keyCode.ENTER) {
alert("enter pressed");
}
});
Определяющая ссылка для ключевых событий: http://unixpapa.com/js/key.html
Ответ 3
Эта ссылка может быть полезна для вас...
Api Jquery Key Press
или попробуйте с этим кодом
Измените нажатие клавиши на клавиатуре:
$('#myDiv').keydown(function(e) {
// your logic
alert("Key pressed");
if (e.keyCode == $.ui.keyCode.ENTER) {
alert("enter pressed");
}
});
Ответ 4
Chrome работает с ключом ENTER
, а не 13
.
это работает для меня во всех браузерах, включая CHROME
.
$('#myDiv').keydown(function(e) {
if ((e.which == 13) || (e.which == keyCode.ENTER)) {
alert("enter pressed");
}