【问题标题】:how to disable the function of ESC key in JavaScript?如何在 JavaScript 中禁用 ESC 键的功能?
【发布时间】: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 什么都没发生。还有什么想法吗?

标签: javascript javascript-events


【解决方案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(); 
            }   
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2020-12-19
    • 2017-12-07
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多