我遇到了一个奇怪的问题,使用document.activeElement.id已经解决了该问题,但是使用$('#id').is(':focus')时似乎总是返回false

在控制台中,我测试了以下内容...

> document.activeElement
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">

> $('#zoomText')
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">

> $('#zoomText').is(':focus')
false

> document.activeElement // to check if focus was lost somehow
<input type="text" for="zoomSlider" id="zoomText" oninput="zoomSliderUpdate(value)" value="100">


为什么is(':focus')返回假?

最佳答案

首先,您的代码中有一个错误。它应该是$('#zoomText').is(':focus')

其次,仅当光标位于元素内部时,该元素才会处于焦点。如果光标在JavaScript控制台中,则它具有焦点并导致输入模糊(焦点不清晰)。

在JavaScript控制台中尝试此操作,然后将光标快速移回输入中。 3秒后,它将在控制台中显示“ true”或“ false”,以指示“ zoomText”元素的焦点状态。



setTimeout(function() { console.log(jQuery('#zoomText').is(':focus')); }, 3000)

10-06 06:09