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

如何在IE,Firefox和Chrome中检测逃逸键按下?下面的代码在IE和警报中有效27,但在Firefox中它会警报0


$('body').keypress(function(e){

    alert(e.which);

    if(e.which == 27){

        // Close my modal window

    }

});


长风秋雁
浏览 544回答 3
3回答

慕桂英546537

注:keyCode被越来越不赞成使用key来代替。function keyPress (e) {&nbsp; &nbsp; if(e.key === "Escape") {&nbsp; &nbsp; &nbsp; &nbsp; // write your logic here.&nbsp; &nbsp; }}这是jsfiddlekeyCode 被弃用看起来keydown和keyup工作,即使keypress可能没有$(document).keyup(function(e) {&nbsp; &nbsp; &nbsp;if (e.key === "Escape") { // escape key maps to keycode `27`&nbsp; &nbsp; &nbsp; &nbsp; // <DO YOUR WORK HERE>&nbsp; &nbsp; }});jQuery的哪个键代码用于转义键

慕田峪7331174

该keydown事件将对Escape正常运行,并具有允许您keyCode在所有浏览器中使用的优势。另外,您需要将侦听器附加到document主体上,而不是附加到主体上。keyCode现在正处于弃用过程中,大多数现代浏览器key现在都提供该属性,尽管您现在仍需要一个不错的浏览器支持回落(撰写本文时,Chrome和Safari的当前版本不支持它)。evt.key现在所有现代浏览器均支持2018年9月更新。document.onkeydown = function(evt) {&nbsp; &nbsp; evt = evt || window.event;&nbsp; &nbsp; var isEscape = false;&nbsp; &nbsp; if ("key" in evt) {&nbsp; &nbsp; &nbsp; &nbsp; isEscape = (evt.key === "Escape" || evt.key === "Esc");&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; isEscape = (evt.keyCode === 27);&nbsp; &nbsp; }&nbsp; &nbsp; if (isEscape) {&nbsp; &nbsp; &nbsp; &nbsp; alert("Escape");&nbsp; &nbsp; }};Click me then press the Escape key

繁星点点滴滴

使用JavaScript可以检查jsfiddle是否正常工作document.onkeydown = function(evt) {&nbsp; &nbsp; evt = evt || window.event;&nbsp; &nbsp; if (evt.keyCode == 27) {&nbsp; &nbsp; &nbsp; &nbsp; alert('Esc key pressed.');&nbsp; &nbsp; }};使用jQuery您可以检查jsfiddle是否正常工作jQuery(document).on('keyup',function(evt) {&nbsp; &nbsp; if (evt.keyCode == 27) {&nbsp; &nbsp; &nbsp; &nbsp;alert('Esc key pressed.');&nbsp; &nbsp; }});
打开App,查看更多内容
随时随地看视频慕课网APP