禁用页面上显示的所有keyup / keydown / keypressed事件

时间:2013-03-06 10:51:06

标签: javascript jquery

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

谢谢!

7 个答案:

答案 0 :(得分:12)

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

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

这将选择页面上的每个元素,然后删除绑定到它们的所有keyupkeydownkeypress事件。

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

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

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

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

看看这个working demo

答案 1 :(得分:3)

尝试

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

答案 4 :(得分:0)

对我来说,这个组合起了作用:

开启按键事件

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

并且为了关闭此事件,我使用了:

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

答案 5 :(得分:0)

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

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

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

希望这会有所帮助。

答案 6 :(得分:-1)

此代码使用substr。

删除TextBox2中按下的最后一个键
 `$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));`
  //removes last letter pressed.