2

我已经使用 jQuery 的 keypress 事件定义了一些全局键盘处理。

有没有办法抑制输入/文本区域字段的这些事件,以免干扰输入?
我已经使用了一些基于元素选择器条件的 hack,但是它们对性能有很大的影响,因为它们在每次按键时都会被触发。

(其中一些字段是动态创建的,这超出了我的控制——也许这很相关。)

4

2 回答 2

3

为所有输入和文本区域创建一个 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
})

在您的密钥处理程序中,您只需要检查该值是否为真,如果为真则返回。

于 2009-02-03T17:42:50.823 回答
1

事实证明,这个活动已经为我提供了我需要的一切;ev.target是活动的 DOM 元素,所以我可以检查它是否是一个输入字段。

于 2009-02-04T16:24:29.843 回答