@mrbykovoleg

Как я могу проверить focus на textarea в условии if javascript?

У меня есть некоторый баг, который я убираю скриптом. Я отключаю клавишу пробел, когда меню открыто, потому что в момент нажатия, фокус падает на button и не убирается по клику вне его, из-за чего при нажатии клавиши пробел происходит выполнение функции (classList.toggle();). В меню есть textarea, я незнаю как правильно написать условие, чтобы при открытом меню НЕ срабатывало нажатие пробела (работает) и срабатывало нажатие пробела, если фокус на textarea находящийся в меню. Вот.

Вот рабочий код, не хватает только проверки фокуса:

btn.addEventListener('click', function(e){
		menu.classList.toggle('is-open');
		
		addEventListener('keydown', function(e){
			if((menu.classList == 'menu is-open') && (e.keyCode == 32)){
				e.preventDefault();
			}
		})
		
		items.onclick = function(e){
			e.stopPropagation();
		}		
	})


upd: Кстати если кто-то не понимает (вдруг), как это нажимая на пробел выполнять функцию при фокусе на кнопке - > https://learn.javascript.ru/focus-blur пролистайте до конца и нажмите на кнопку "Решение". Потом балуйтесь клавишей пробел
  • Вопрос задан
  • 474 просмотра
Решения вопроса 1
Ragtime_Kitty
@Ragtime_Kitty
if (e.keyCode == 32 && menu.classList.contains('is-open') && !document.querySelector('textarea:focus') )

Ну или заменить button на div и не париться
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@grinat
Хз, шо там у тебя происходит, но ванга мне подсказывает что отрицательный tabindex на button решит твою проблему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы