如何使用纯JS或jQuery检测转义键按下?

2020/09/24 15:21 · javascript ·  · 0评论

可能重复:
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.
    }
}

代码段:


keyCode 正在被弃用

看起来keydownkeyup工作,即使keypress可能没有


$(document).keyup(function(e) {
     if (e.key === "Escape") { // escape key maps to keycode `27`
        // <DO YOUR WORK HERE>
    }
});

jQuery的转义键的哪个键代码

keydown事件将对Escape正常运行,并具有允许您keyCode在所有浏览器中使用的优势另外,您需要将侦听器附加到document主体而不是主体。

2016年5月更新

keyCode现在正处于弃用状态,并且大多数现代浏览器key现在都提供该属性,尽管您现在仍然需要一个不错的浏览器支持回落(撰写本文时,Chrome和Safari的当前版本不支持它)。


evt.key现在所有现代浏览器均支持2018年9月更新

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 then press the Escape key

使用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&& whichkeyup||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);

在Firefox 78上,请使用以下命令(“键”不适用于Escape键):

function keyPress (e)(){
  if (e.key == "Escape"){
     //do something here      
  }
document.addEventListener("keyup", keyPress);

我认为最简单的方法是香草javascript:

document.onkeyup = function(event) {
   if (event.key === 27){
     //do something here
   }
}
本文地址:http://javascript.askforanswer.com/ruheshiyongchunjshuojqueryjiancezhuanyijiananxia.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!