我已经使用jQuery的keypress事件定义了一些全局键盘处理。
有没有办法为输入 / textarea 字段抑制这些事件,以免干扰输入?
我已经使用了一些基于元素选择器的条件,但是那些因为它们在每一个按键被触发而产生了很大的性能影响。
(其中一些字段是动态创建的,这是我无法控制的 - 也许这是相关的。)
答案 0 :(得分:3)
为所有输入和textareas创建一个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
})
在你的密钥处理程序中,你只需检查值是否为真,如果为真则返回。
答案 1 :(得分:1)
事实证明,事件已经为我提供了我需要的一切; ev.target 是活动的DOM元素,因此我可以检查这是否是输入字段。