@kttotto
пофиг на чем писать

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

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

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

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

Добавление tabindex проблему не решило.
  • Вопрос задан
  • 19452 просмотра
Решения вопроса 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()
}
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SummerWeb Ярославль
от 120 000 до 180 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Market-place Ростов-на-Дону
от 100 000 до 200 000 ₽
23 июн. 2024, в 22:19
500 руб./за проект
23 июн. 2024, в 21:35
65000 руб./за проект