Отключение jquery нажатия клавиш в полях ввода или текстовой области - PullRequest
6 голосов
/ 14 ноября 2009

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

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

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

Ответы [ 3 ]

16 голосов
/ 14 ноября 2009
$(document).keypress(function(e) { 
    if ($(e.target).is('input, textarea')) {
        // event invoked from input or textarea
    }
    ...        
});
1 голос
/ 15 ноября 2009

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

$('#my_form_field').live('keypress', function(e) {
    if (e.keyCode == 96) {
        e.preventDefault();
        // Do stuff.
    }
});
1 голос
/ 14 ноября 2009

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

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

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

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