我已经使用 jQuery 的 keypress 事件定义了一些全局键盘处理。
有没有办法抑制输入/文本区域字段的这些事件,以免干扰输入?
我已经使用了一些基于元素选择器条件的 hack,但是它们对性能有很大的影响,因为它们在每次按键时都会被触发。
(其中一些字段是动态创建的,这超出了我的控制——也许这很相关。)
我已经使用 jQuery 的 keypress 事件定义了一些全局键盘处理。
有没有办法抑制输入/文本区域字段的这些事件,以免干扰输入?
我已经使用了一些基于元素选择器条件的 hack,但是它们对性能有很大的影响,因为它们在每次按键时都会被触发。
(其中一些字段是动态创建的,这超出了我的控制——也许这很相关。)
为所有输入和文本区域创建一个 onfocus 处理程序,该处理程序设置一些全局变量,指示应忽略键盘事件。为 blur 事件创建另一个处理程序以重置全局变量。
var DISABLE_KEY_HANDLERS = false;
$('input[type=text], input[type=password], textarea').focus(function(){
DISABLE_KEY_HANDLERS = true
})
$('input[type=text], input[type=password], textarea').blur(function(){
DISABLE_KEY_HANDLERS = false
})
在您的密钥处理程序中,您只需要检查该值是否为真,如果为真则返回。
事实证明,这个活动已经为我提供了我需要的一切;ev.target是活动的 DOM 元素,所以我可以检查它是否是一个输入字段。