2016-11-22 32 views
1

Я использую jQuery 1.11. Я хочу запустить действие, если пользователь нажимает клавишу «d» на клавиатуре. Так что у меня есть этаВ jQuery, как я могу вызвать действие при нажатии клавиши, но только если фокус не находится в поле формы?

$(document).keypress(function(e) { 
    if(e.which == 68 || e.which == 100) { 
     submitDownloadUsersReq(); 
    } 
}); 

Однако, если нажать клавишу «D», в то время как в текстовом поле, я не хочу вышеуказанные действия, чтобы срабатывать. Как я могу изменить приведенное выше, чтобы я не запускал действие, если пользователь возится с полем формы?

ответ

1

Вы можете проверить тип элемента, используя e.target и is():

$(document).keypress(function(e) { 
    if (!$(e.target).is(':input') && (e.which == 68 || e.which == 100)) { 
     submitDownloadUsersReq(); 
    } 
}); 

Обратите внимание, что селектор :input будет соответствовать input, select, textarea и button.

+0

не будет указывать этот документ на этот сценарий? Исправьте меня, если я ошибаюсь. –

+1

Вы правы - пропустили главный селектор. благодаря –

1

Вы можете отменить событие, когда пользователь нажимает d из входного элемента,

$(document).keypress(function(e) { 
    if(!$(e.target).is("input")) { 
     if(e.which == 68 || e.which == 100) { 
     submitDownloadUsersReq(); 
     } 
    } 
});