10

我想使用 Javascript 或 jQuery 禁用完整的键盘键。

另外,是否可以使用 PHP 脚本禁用键盘?

4

3 回答 3

26

尝试这个

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

对于特定区域试试这个

$(".class").keydown(function(event) { 
    return false;
});
于 2013-10-28T06:05:11.497 回答
1

虽然取消keydown效果适用于大多数开箱即用的键,但某些特殊组合(例如Ctrl+R表示重新加载,Ctrl+T表示新选项卡等)不能以这种方式被阻止,而是始终发送到浏览器。

新的(在撰写本文时是实验性的)Keyboard Lock API允许您捕获这些类型的按键。您可以像这样使用它,或者如果您只想锁定其中的一些,也可以传入一组键码。

navigator.keyboard.lock();

完成后,您可以致电

navigator.keyboard.unlock();

停止捕获这些关键代码。

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

在您的情况下,这只是取消事件(以@Harish Singh 的回答Ctrl的风格),但其他用例将涉及在按下某些键集时执行其他操作,可能会关闭在您的网络应用程序中打开的文档,W而不是而不是选项卡,或者Esc在全屏游戏中按下时打开暂停菜单,而不是退出全屏。


您现在可以试用 Keyboard Lock API,但目前浏览器支持仅限于桌面上的 Chrome 和其他 Chromium 浏览器(Edge 和 Opera)。


最后一点是,出于安全原因,用户始终可以通过浏览器手势退出键盘锁定,以防止他们被困住(如果您将其与Pointer Lock API结合使用,可能会发生这种情况)。在 Chrome 中,这个退出手势是按住Esc键 2 秒。

于 2021-01-15T16:56:50.347 回答
-1

尝试这个 。

$(document).keypress(function(e) {
    return false;
});
于 2016-01-12T14:37:57.810 回答