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

Posted

技术标签:

【中文标题】如何在 JavaScript 中禁用 ESC 键的功能?【英文标题】:how to disable the function of ESC key in JavaScript? 【发布时间】:2013-01-30 10:21:55 【问题描述】:

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

填写用户信息时,如果用户突然按ESC键,数据会丢失。

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

我的 Java Script 代码是,

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

在 Stack Overflow 和 google 中搜索了很多。没有任何效果。请任何人帮我这样做。谢谢..

【问题讨论】:

默认情况下,转义键没有什么特别的作用。你怎么看数据会丢失?您可以使用 keydown 事件监听器做出相应的反应。 感谢您的回复。数据丢失意味着文本字段中输入的文本丢失。 我需要 ESC 在我的应用程序中不起作用。如何做到这一点? 你能创建一个 JsFiddle 或给我们一个链接来说明你的意思吗? @Christoph 什么都没发生。还有什么想法吗? 【参考方案1】:

您可以将事件监听器绑定到您的输入字段,以便在按下 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;
    
);

Example

【讨论】:

感谢您的回复...什么也没发生。还有什么想法吗? 什么也没发生是什么意思?此代码works perfectly。您是否在输入元素之后包含此脚本?查看 webdeveloper 控制台(按 F12)查看错误。 感谢您的回复...在 Fiddle 中有效,但在我的浏览器中无效。 @Anand 假设您的回答是,您正在使用 Internet Explorer。但是请注意,您的代码会在所有其他浏览器中中断! 查看我给出的解决方案。它适用于所有浏览器。我将调试为什么您的代码不适合我。无论如何感谢克里斯托夫先生的支持。【参考方案2】:

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

我的 Java Script 代码将是,

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;

    

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

【讨论】:

您应该使用此代码!这仅适用于 Internet Explorer,在所有其他浏览器中都将失败。绑定事件处理程序的正确方法是通过addEventListener,而不是通过attachEvent【参考方案3】:

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

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

【讨论】:

我猜 'keydown' 在 Chrome 中不起作用。最好改用“keyup” 感谢您的支持。我不知道JQuery。请你把它转换成JS。 伙计,这可能是你可能得到的最简单的两行代码。为什么不今天从 jQyery 开始! :) @Riju 你猜错了!你是怎么得出这个假设的? @Christoph .. 没有冒犯...这只是我的拙见。【参考方案4】:

我使用 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(); 
               
        
    );

【讨论】:

以上是关于如何在 JavaScript 中禁用 ESC 键的功能?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 MFC 应用程序在按 ESC 或 ALTF+F4 时退出?

如何在javascript中完全获取带有重复键的JSON

如何计算数组中对象键的总和 - javascript

如何从 Javascript 中的对象列表中获取键的值?

禁用 UWP 应用与 Tab 键的交互

如果在浏览器中禁用 javascript,如何在表单提交时弹出 javascript 和操作? [复制]