#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();
}
});