可能な重複:
jQueryを使ったエスケープキーのキーコード
IE、FirefoxおよびChromeでエスケープキーが押されたことを検出する方法以下のコードはIEで動作し27
を警告しますが、Firefoxでは0
を警告します
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
注:keyCode
は 廃止予定 代わりにkey
を使用してください。
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
これは jsfiddle です。
keyCode
は廃止予定です
たとえ
keydown
がうまくいかなくても、keyup
とkeypress
はうまくいくようです。
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
keydown
イベントはEscapeにはうまく機能し、すべてのブラウザでkeyCode
を使用できるという利点があります。また、リスナーを本体ではなくdocument
にアタッチする必要があります。
2016年5月に更新
keyCode
は現在非推奨になりつつあり、最近のほとんどのブラウザでは key
プロパティが提供されていますが、現時点ではまともなブラウザサポートの代替手段がまだ必要ですサポートしていません)。
更新2018年9月 evt.key
は現在、すべての最近のブラウザでサポートされています。
document.onkeydown = function(evt) {
evt = evt || window.event;
var isEscape = false;
if ("key" in evt) {
isEscape = (evt.key === "Escape" || evt.key === "Esc");
} else {
isEscape = (evt.keyCode === 27);
}
if (isEscape) {
alert("Escape");
}
};
Click me
JavaScriptを使用して あなたは作業を確認することができますjsfiddle
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
};
jQueryを使用して あなたは作業を確認することができますjsfiddle
jQuery(document).on('keyup',function(evt) {
if (evt.keyCode == 27) {
alert('Esc key pressed.');
}
});
keyCode
&& which
&keyup
||を確認してくださいkeydown
$(document).keydown(function(e){
var code = e.keyCode || e.which;
alert(code);
});
最善の方法はこれのための機能を作ることです
関数:
$.fn.escape = function (callback) {
return this.each(function () {
$(document).on("keydown", this, function (e) {
var keycode = ((typeof e.keyCode !='undefined' && e.keyCode) ? e.keyCode : e.which);
if (keycode === 27) {
callback.call(this, e);
};
});
});
};
例:
$("#my-div").escape(function () {
alert('Escape!');
})
以下はESCキーを無効にするだけでなく、押された状態をチェックし、状況に応じてアクションを実行するかどうかを決定するコードです。
この例では、
e.preventDefault();
eSCキーを押す動作を無効にします。
あなたはこれでdivを隠すことのような何かをするかもしれません:
document.getElementById('myDivId').style.display = 'none';
ESCキーが押された場所も考慮されます。
(e.target.nodeName=='BODY')
これに当てはめたいのであれば、条件部を全部削除しても構いません。または、カーソルが入力ボックスにあるときにのみこのアクションを適用するようにここでINPUTをターゲットにすることもできます。
window.addEventListener('keydown', function(e){
if((e.key=='Escape'||e.key=='Esc'||e.keyCode==27) && (e.target.nodeName=='BODY')){
e.preventDefault();
return false;
}
}, true);
私は最も簡単な方法はバニラジャバスクリプトだと思います:
document.onkeyup = function(event) {
if (event.key === 27){
//do something here
}
}