прослушиватель keydown для тела

#javascript #jquery

#javascript #jquery

Вопрос:

Итак, я хочу вызвать функцию при нажатии клавиши пробела на странице. Единственная проблема заключается в том, что функция НЕ может быть вызвана, если она сфокусирована на панели ввода. Есть идеи о том, как это сделать?

Этот код работает, но по-прежнему запускает функцию при фокусировке на панели ввода

 $(document).keydown(function(e){
    if (e.keyCode==32) {
     stopplay();
    }
});
  

Комментарии:

1. Что такое «панель ввода»? Это адресная строка браузера?

2. ваш код работает, пожалуйста, проверьте эту скрипку jsfiddle.net/d3cv5

Ответ №1:

обновите это:

 if (e.keyCode==32 amp;amp; !$(e.target).is(':input')) {
 stopplay();
}
  

:input удобно, если у вас есть другие элементы ввода, такие как select, textarea etc , он выбирает все элементы ввода.

Ответ №2:

ДЕМОНСТРАЦИЯ

Используйте event.stopPropagation() метод, чтобы предотвратить пузырение keydown.

 $(':input').keydown(function(e){
    e.stopPropagation();
});
  

Обновить:

Если вам нужно применить вышеуказанное к другим элементам ввода, используйте $(':input') селектор.

Комментарии:

1. Я думал, вы не прочитали вопрос полностью. я взглянул на скрипку и удалил понижающий голос.

Ответ №3:

Ну, вы можете посмотреть, где возникло событие:

 $(document).keydown(function(e){
    if(!$(e.target).is("input")) {
        // it's NOT from an input!
    }
});
  

Ответ №4:

Используйте этот код

 $(document).keydown(function(e){
    if (e.keyCode==32 amp;amp; !$(e.target).is("input")) {
     stopplay();
    }
});