我的页面上有很多关键事件。有没有办法禁用页面上出现的所有
keyup
/keydown
/keypress
事件,而不是单独禁用每个事件?
我正在寻找使用 Javascript 或 jQuery 的解决方案。
你可以这样做,尽管我预计它在较大的页面上可能会非常慢:
$('*').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>
)。
看看这个工作演示。
尝试
$(document).find('*').off('keyup keydown keypressed');
并且您应该将其放入
$(document).ready()
块中,在页面上加载所有 JS 之后(例如在 </body>
标签之前)。
可以使用preventDefault()函数来解决
$('*').unbind('keyup keydown keypress')
对我来说这个组合有效:
开启按键事件
$(document).keypress(function(){
// Code
});
为了关闭此事件,我使用了:
$(document).off('keypress');
$(elem).off('keypress.jstree')
我最近也遇到了这个问题,因为我正在向树节点添加编辑功能。 通过查看源代码,我注意到有一个事件
keypress.jstree
被绑定了 500 毫秒的超时。
只需在初始化树后添加上述
off
绑定即可立即解决我的所有问题! 这既适用于静态树结构,也适用于加载了 ajax 数据的树。 我目前使用的版本是3.3.5
希望这有帮助。
此代码使用 substr 删除 TextBox2 中最后按下的键。
`$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));`
//removes last letter pressed.