2009-11-14 3 views
5

Я пытаюсь запустить событие, когда нажата определенная клавиша. Он отлично работает с этим кодом:Отключение jquery нажатия клавиши ввода или textarea

$(document).keypress(function(e){ 
    switch(e.which){ 
      case 96:$("a.quicklinks").trigger('click'); 
      break; 
    } 

Но, если пользователь находится в поле формы, я хотел бы, чтобы отключить это поведение. Как проверить, вводит ли пользователь в поле формы для этого? Благодарю.

ответ

1

Может быть, вы можете установить глобальный вар

var disable_keyevents = false; 
$('textarea,input') 
    .focus(function() { disable_keyevents = true }) 
    .blur(function() { disable_keyevents = true; }); 

, то вы просто проверить значение disable_keyevents в $ (документ) .keypress события перед переключателем.

16
$(document).keypress(function(e) { 
    if ($(e.target).is('input, textarea')) { 
     // event invoked from input or textarea 
    } 
    ...   
}); 
+0

Это отлично работает, спасибо! – Bill

0

Этот код срабатывает, когда пользователь нажимает ASCII символ # 96 внутри вашей формы - вы можете использовать это, чтобы отключить/изменить «код по умолчанию» для этого нажатия клавиши.

$('#my_form_field').live('keypress', function(e) { 
    if (e.keyCode == 96) { 
     e.preventDefault(); 
     // Do stuff. 
    } 
}); 
Смежные вопросы