ユーザーがEsc
を押すとdivを削除するキーを押す機能を実装しようとしています。これはFirefoxで動作します。IEでは次のコードが使用されます:
$("body").keypress(function(e) {
alert("any key pressed");
if (e.keyCode == 27) {
alert("escape pressed");
}
});
キーを押すと、最初のalert
が表示され、エスケープを押すと、2番目のalert
も表示されます。
これはChrome=では機能しません。最初のalert
は、文字キーのいずれかを押すと常に表示されますが、Escape、Tab、Spaceなどを押すと表示されません数字の。
これはなぜですか?これらのキーの押下に応答するChromeを取得する方法はありますか?
代わりにkeydown
を処理してみてください。
keydownを使用します。 keypressは、Chrome(他のブラウザについては不明)のESCでは動作しません。
$(newTag).keydown(function(e) { //keypress did not work with ESC;
if (event.which == '13') {
ProfilePage.saveNewTag(search_id, $(newTag).val());
}
else if (window.event.which){
$(newTag).remove();
}
});
ESCキーの場合:
$(document).keydown(function(e) {
if(e.keyCode == 27) { /* Run code */ }
}
「L」などの文字キーの場合:
$(document).keypress(function(e) {
if(e.which == 108) { }
});
ChromeとFirefoxの両方で動作します
2番目のアラートの後も追加します
e.preventDefault();
これにより、イベントのデフォルトアクションがトリガーされなくなります。
この方法に関する詳細情報 こちら
コードは次のようになります
$("body").keypress(function(e) {
alert("any key pressed");
if (e.keyCode == 27) {
alert("escape pressed");
e.preventDefault();
}});
キープレス「ESC」
e.which: 0
e.keyCode: 27
keyup 'ESC'
e.which: 27
e.keyCode: 27
印刷できない文字の場合は、keyup
を使用することをお勧めします。
Jquery.hotkey jsファイルを使用すると、ショートカットキーを作成できます
$(document).bind('keydown', 'esc', function(){ });