подавить события клавиатуры для полей ввода - PullRequest
2 голосов
/ 03 февраля 2009

Я определил некоторую глобальную обработку клавиатуры, используя событие нажатия клавиш jQuery.

Есть ли способ подавить эти события для полей input / textarea , чтобы не мешать вводу?
Я использовал некоторые хаки с условиями, основанными на селекторах элементов, но они оказали большое влияние на производительность, поскольку они срабатывали при каждом нажатии клавиши.

(Некоторые из этих полей создаются динамически, что вне моего контроля - возможно, это актуально.)

Ответы [ 2 ]

3 голосов
/ 03 февраля 2009

Создайте обработчик onfocus для всех входных данных и текстовых областей, который устанавливает некоторую глобальную переменную, указывающую, что события клавиатуры следует игнорировать Создайте другой обработчик для события размытия, чтобы сбросить глобальную переменную.

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 голос
/ 04 февраля 2009

Оказывается, мероприятие уже дает мне все, что мне нужно; ev.target - активный элемент DOM, поэтому я могу проверить, является ли это полем ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...