如何使用JavaScript或jQuery禁用完整的键盘按键?

10
我想使用JavaScript或jQuery禁用完整键盘按键。 另外,是否可能使用PHP脚本禁用键盘?

不确定您在这里的意思。您能举例说明吗? - Michael Petrotta
嗨,Michael,我正在创建用户登录表单,在这种情况下,用户无法使用键盘,所有键都无法在此页面上工作。 - Mohit Gupta
无需在浏览器上为Web编写代码 - Mohit Gupta
3个回答

29

试一试

document.onkeydown = function (e) {
        return false;
}

对于特定的区域,请尝试这个

$(".class").keydown(function(event) { 
    return false;
});

@Harish Singh和Mohit Gupta,你们确定这对所有键盘按键都适用吗?包括Alt+F4、Alt+Tab、在全屏模式下激活时的Escape键以及Print Screen键。请回复我。 - Sakkeer A

1
虽然取消 keydown 效果对于大多数按键都是可以直接使用的,但某些特殊组合键(例如重新加载所需的 Ctrl+R,新建标签页所需的 Ctrl+T 等)无法通过此方式阻止并始终被发送到浏览器中。
新的(在撰写本文时仍处于实验阶段的)Keyboard Lock API 允许您捕获这些类型的按键。您可以像下面这样使用它,或者如果只想锁定其中一些按键,则还可以传入一个键码数组。
navigator.keyboard.lock();

当你完成后,可以调用下面的代码:
navigator.keyboard.unlock();

停止捕获这些键码。

请注意,您仍需要监听并响应keydown事件 - 新API允许您捕获这些低级按键,但仍需要定义按下这些按键时会发生什么。

在您的情况下,这只是取消事件(类似于@Harish Singh's answer),但其他用例可能涉及在按下某些键集时执行其他操作,例如使用Ctrl+W关闭您的Web应用程序中打开的文档,而不是选项卡,或者在全屏游戏中按下Esc时打开暂停菜单,而不是退出全屏模式。


您今天可以尝试键盘锁定API,但目前仅限于桌面上的Chrome和其他Chromium浏览器(Edge和Opera)支持


最后提醒一点,出于安全考虑,用户始终可以通过浏览器手势退出键盘锁定,以防止被困住(如果与 Pointer Lock API 一起使用可能会发生这种情况)。 在 Chrome 中,此退出手势是按住 Esc 键2秒钟。


-1

试试这个。

$(document).keypress(function(e) {
    return false;
});

错误的Windows键 - Juned Ansari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接