如何按esc关闭模态
How to close modal by pressing esc
我是 Javascript 的新手,除了单击跨度外,我还想通过按 esc
键关闭此模式。怎么写?
var modal = document.getElementById('myModal');
var img = document.getElementById('myImg');
var img2 = document.getElementById('myImg2');
var img3 = document.getElementById('myImg3');
var img4 = document.getElementById('myImg4');
var modalImg1 = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img2.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img3.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img4.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
var span = document.getElementsByClassName("close")[0];
span.onclick = function()
{
modal.style.display = "none";
}
我正在考虑在该跨度之后添加:
window.onkeypress = function (event)
{
if (event.keyCode == 27 && modal.style.display='block')
{
modal.style.display='none';
}
}
但真的不知道那里出了什么问题
感谢您的帮助。
尝试使用 onkeyup
而不是 onkeypress
:
window.onkeyup = function (event) {
if (event.keyCode == '27' && modal.style.display=='block') {
modal.style.display='none';
}
}
为什么?
使用onkeypress
您将获得针对不同浏览器的不同键码。
在 SO 上检查这些线程:
Which keycode for escape key with jQuery
和:
How to detect escape key press with pure JS or jQuery?
我是 Javascript 的新手,除了单击跨度外,我还想通过按 esc
键关闭此模式。怎么写?
var modal = document.getElementById('myModal');
var img = document.getElementById('myImg');
var img2 = document.getElementById('myImg2');
var img3 = document.getElementById('myImg3');
var img4 = document.getElementById('myImg4');
var modalImg1 = document.getElementById("img01");
var captionText = document.getElementById("caption");
img.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img2.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img3.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
img4.onclick = function()
{
modal.style.display = "block";
modalImg1.src = this.src;
captionText.innerHTML = this.alt;
}
var span = document.getElementsByClassName("close")[0];
span.onclick = function()
{
modal.style.display = "none";
}
我正在考虑在该跨度之后添加:
window.onkeypress = function (event)
{
if (event.keyCode == 27 && modal.style.display='block')
{
modal.style.display='none';
}
}
但真的不知道那里出了什么问题
感谢您的帮助。
尝试使用 onkeyup
而不是 onkeypress
:
window.onkeyup = function (event) {
if (event.keyCode == '27' && modal.style.display=='block') {
modal.style.display='none';
}
}
为什么?
使用onkeypress
您将获得针对不同浏览器的不同键码。
在 SO 上检查这些线程:
Which keycode for escape key with jQuery
和:
How to detect escape key press with pure JS or jQuery?