Задать вопрос
@kttotto
пофиг на чем писать

Закрыть модальные окна по клику esc?

Приветствую!

Есть бутстраповское модальное окно, внутри которого есть поле для загрузки файла с компьютера, соответственно есть кнопка "Выберите файл". Когда кликается на эту кнопку, открывается модальное виндовс окно. В IE по нажатию esc, сначала закроется виндовское окно, если еще раз нажать esc закроется веб модальное окно. В Chrome по нажатию esc закрывается сразу два окна, а нужно чтобы тоже по очереди.

Нагуглить решение не удалось. Может кто в курсе?

Добавление tabindex проблему не решило.
  • Вопрос задан
  • 20179 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
<div id="modal_id" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">Модальное окно, закрывающееся по esc</div>
<script>
	document.addEventListener('keypress', function (e) {
		if(e.keyCode === 27) document.getElementById('modal_id').hidden= 1;
	}); 
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Нужно добавить
tabindex="-1"
в строку, которая отвечает за закрытие. Вот так должно получиться:
<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal' tabindex='-1'>
<div class='modal-body'>
<div>Test</div>
</div>


Можете еще выключить закрытие через Esc, для этого нужно добавить data-backdrop="static" и data-keyboard="false"

HTML:
<div id="modal_id" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">

Вариант выключения через JavaScript:
$('#modal_id').modal({ backdrop: 'static', keyboard: false });
Ответ написан
@webtostep
У меня все решилось так
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
//ваша функция закрытия окна
hideModal()
}
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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