У меня есть кнопка с атрибутом автофокуса.
Когда пользователь нажимает кнопку (или нажимает «клавишу ввода», так как она имеет автофокус), появляется модальное окно.
Этот модал также имеет поле ввода с атрибутом autofocus.
После того, как пользователь что-то введет и нажмет «клавишу ввода», модальное окно будет закрыто.
Я бы хотел снова сфокусировать начальную кнопку после закрытия модального окна.
Но я не могу заставить его работать.
Я попытался добавить атрибут autofocus
к самой кнопке, а также попытался добавить document.getElementById("myBtn").focus();
к функции, закрывающей модальное окно. Никто не работал.
Я попытался заменить поле ввода для кнопки, чтобы закрыть модальное окно, и это работает таким образом, поэтому я предполагаю, что проблема связана с onKeyDown="if(event.keyCode==13) closeModal();
во вводе, так как клавиша ввода используется для более чем одна вещь на странице.
Верны ли мои предположения? Есть ли способ заставить его работать в этих условиях?
Вот упрощенная версия того, с чем я работаю:
var modal = document.getElementById('myModal');
var btn = document.getElementById("myBtn");
btn.onclick = function() {
modal.style.display = "block";
document.getElementById("modalInput").focus();
}
function closeModal() {
modal.style.display = "none";
document.getElementById("myBtn").focus();
}
.modal {
display: none;
position: fixed;
z-index: 1;
padding-top: 200px;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.modal-content {
background-color: #fefefe;
margin: auto;
padding: 20px;
width: 30%;
text-align: center;
}
<button id="myBtn" autofocus>Open Modal</button>
<div id="myModal" class="modal">
<div class="modal-content">
<p>This is a modal.</p>
<input id="modalInput" type="text" autofocus onKeyDown="if(event.keyCode==13) closeModal();">
</div>
</div>