如何在 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 键的功能?的主要内容,如果未能解决你的问题,请参考以下文章