如何在JavaScript中禁用ESC键的功能?

如何在JavaScript中禁用ESC键的功能?,javascript,javascript-events,Javascript,Javascript Events,在我的聊天应用程序中,有一些获取用户登录详细信息的文本字段 填写用户详细信息时,如果用户突然按下ESC键,数据将丢失 我需要禁用ESC键的功能吗?我需要使用哪个事件?我该怎么做呢 我的Java脚本代码是 function esc(e){ e = e || window.event || {}; var charCode = e.charCode || e.keyCode || e.which; if(charCode == 27){ return false;

在我的聊天应用程序中,有一些获取用户登录详细信息的文本字段

填写用户详细信息时,如果用户突然按下ESC键,数据将丢失

我需要禁用ESC键的功能吗?我需要使用哪个事件?我该怎么做呢

我的Java脚本代码是

function esc(e){
    e = e || window.event || {};
    var charCode = e.charCode || e.keyCode || e.which;
    if(charCode == 27){
    return false;
    }
}

在Stack overflow和google中搜索了很多。什么都没用。请任何人帮我做到这一点。谢谢..

我使用jquery做了类似的事情,将输入限制为数字

    $(inputBox).keydown(function(event) {
        // Allow only backspace and delete
        var allowed_keys = [
            46, // delete
            8, // backspace
                 ];
        if ($.inArray(event.keyCode, allowed_keys) != -1) {
            // let it happen, don't do anything
        }
        else {
            // Ensure that it is a number and stop the keypress
            if (event.keyCode < 48 || event.keyCode > 57 ) {
                event.preventDefault(); 
            }   
        }
    });
$(inputBox).keydown(函数(事件){
//仅允许退格和删除
允许的变量\u键=[
46,//删除
8,//退格
];
if($.inArray(event.keyCode,允许的_键)!=-1){
//让它发生吧,什么都不要做
}
否则{
//确保它是一个数字并停止按键
如果(event.keyCode<48 | | event.keyCode>57){
event.preventDefault();
}   
}
});

您可以将eventlistener绑定到您的输入字段,以便在按下Esc并将其禁用时捕获事件

document.querySelector("input").addEventListener("keydown",function(e){
    var charCode = e.charCode || e.keyCode || e.which;
    if (charCode == 27){
         alert("Escape is not allowed!");
        return false;
    }
});

我已将其用于登录弹出代码:

jQuery(document).keyup(function(e){
    if(e.keyCode==27 && popupStatus==1){
    // alert('not allowed !!!');
        // or any other code
     return false;
    }
});

我得到了用以下代码控制“F5,Esc,BackSpace(BS)”键的解决方案

我的Java脚本代码是

document.attachEvent("onkeydown", win_onkeydown_handler);

function win_onkeydown_handler() {
    switch (event.keyCode) {

    case 116 : // 'F5'
         event.returnValue = false;
         event.keyCode = 0;
         break;  

    case 27: // 'Esc'
        event.returnValue = false;
        event.keyCode = 0;
        break;

    case 08: // 'BackSpace'
        if (event.srcElement.tagName == "INPUT"
                || event.srcElement.tagName == "TEXTAREA") {
        } else {
            event.returnValue = false;
            event.keyCode = 0;
        }
        break;

    }
}

感谢所有支持我这样做的人以及您的建议。

默认情况下,退出键没有任何特殊功能。你认为数据会丢失吗?您可以使用keydown eventlistener做出相应的反应。感谢您的回复。数据丢失意味着文本字段中输入的文本丢失。我需要ESC在我的应用程序中无法工作。如何做到这一点?你能创建一个JSFIDLE或给我们一个链接来展示你的意思吗?@Christoph什么都没发生。还有什么想法吗?谢谢你的回复。。。什么都没发生。还有什么想法吗?你说什么都没发生是什么意思?这个代码。在输入元素之后是否包含此脚本?查看webdeveloper控制台(按F12键)查找错误。感谢您的回复…在Fiddle中工作,但在我的浏览器中不工作。@a假设您的答案是,您正在使用Internet Explorer。但是,请注意,您的代码将在所有其他浏览器中中断!查看我给出的解决方案。它适用于所有浏览器。我将调试为什么您的代码不适用于我。无论如何,感谢您的支持,Christoph先生。我猜“keydown”在Chrome中不起作用。最好使用“keyup”来代替。谢谢你的支持。我在JQuery中没有knowlede。你能把它转换成JS吗?伙计,这可能是你可能得到的最简单的两行代码。为什么今天不从jQyery开始!!:)@日州:你猜错了!你是怎么得出这个假设的?@Christoph。。无意冒犯。。。这只是我的拙见。你不应该使用这个代码!这只在Internet Explorer中有效,在所有其他浏览器中都会失败。绑定eventhandler的正确方法是通过
addEventListener
,而不是通过
attachEvent