我的页面上有很多关键事件。有没有办法禁用页面上的所有keyup / keydown / keypressed事件,而不是单独禁用每个事件。 我正在寻找使用javascript / jquery的解决方案。
谢谢!
答案 0 :(得分:12)
你可以这样做,但我预计在较大的网页上可能会非常慢:
$('*').off('keyup keydown keypress');
这将选择页面上的每个元素,然后删除绑定到它们的所有keyup
,keydown
和keypress
事件。
如果您想阻止用户使用 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.