10

我的页面上有很多关键事件。有没有办法禁用页面上存在的所有 keyup/keydown/keypressed 事件,而不是单独禁用每个事件。我正在寻找使用 javascript/jquery 的解决方案。

谢谢!!

4

7 回答 7

16

可以这样做,但我预计在较大的页面上它可能会非常慢:

$('*').off('keyup keydown keypress');

这将选择页面上的每个元素,然后删除任何绑定到它们的keyupkeydown和事件。keypress

如果您想阻止用户使用该backspace键导航到上一页,您可以尝试以下代码:

var inputTags = ['INPUT', 'TEXTAREA'];

$(document).on('keypress', function(e) {
    if(e.which === 8 && $.inArray(e.target.tagName, inputTags) === -1)
        e.preventDefault();
});

这应该限制退格键的使用,除非焦点是可以输入文本的输入元素(例如 an<input type="text">或 a <textarea>)。

看看这个工作演示

于 2013-03-06T10:55:15.180 回答
3

尝试

$(document).find('*').off('keyup keydown keypressed');

$(document).ready()在页面上所有加载的 JS 之后(</body>例如,在标记之前),您应该将其放入块中。

于 2013-03-06T10:56:31.573 回答
2

$('*').unbind('keyup keydown keypress')

于 2013-03-06T11:01:30.557 回答
2

你可以使用 preventDefault() 函数来解决它

于 2013-03-06T10:59:10.603 回答
0

对我来说,这个组合是:

开启按键事件

$(document).keypress(function(){
// Code
});

为了关闭这个事件,我使用了:

$(document).off('keypress');

于 2017-04-05T10:33:23.550 回答
0

$(elem).off('keypress.jstree')

我最近也在为此苦苦挣扎,因为我正在向树节点添加编辑功能。通过查看源代码,我注意到有一个事件keypress.jstree绑定了 500 毫秒的超时。

只需在初始化树后添加上述off绑定即可立即解决我的所有问题!这既适用于静态树结构,也适用于加载了 ajax 数据的树。我目前使用的版本是 3.3.5

希望这可以帮助。

于 2019-01-21T14:07:14.180 回答
-1

此代码使用 substr 删除 TextBox2 中按下的最后一个键。

 `$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));`
  //removes last letter pressed.
于 2015-09-20T13:37:40.030 回答