我们有一个图层,当某个文本输入具有焦点时会出现,而在输入失去焦点时应该会消失。我试图这样做:

<input type="text" onblur="document.getElementById('hideme').style.display='none'" />
<div id="hideme">Textextext <a href="http://disney.com/">disney</a> text</div>


我的问题是:当用户单击链接链接时,浏览器没有遵循该链接。在浏览器检查点击位置之前,该层似乎消失了。我在这里可以做什么?

一种想法是观察鼠标是否进入hideme div,而不是在鼠标光标位于其中时关闭它,但这似乎很复杂。你有更好的主意吗?

顺便说一句:将其粘贴到w3schools的Tryit Editor中,可以非常轻松地进行尝试。 :-)

最佳答案

我想到的第一个解决方案是使用setTimeout函数:

<input type="text" onblur="setTimeout('document.getElementById(\'hideme\').style.display=\'none\'', 100)" />




不用斜杠:

function hidemeWithDelay() {
    setTimeout("document.getElementById('hideme').style.display='none'", 100);
}

<input type="text" onblur="javascript:hidemeWithDelay();" />

10-06 08:07